Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 17.08.2010 um 16:53:23 Uhr
Zitat von Daffman: am 17.08.2010, 13:00:31 Uhr
das mit dem umbenennten funktioniert in die eine richtung, aber ...
Set /a rgc+=1
#698
GELÖST

Batch datei spuckt nach for f in der for l schleife nicht die varbiablen aus!

Frage Entwicklung Batch & Shell

Mitglied: Daffman

Daffman (Level 1) - Jetzt verbinden

16.08.2010, aktualisiert 17.08.2010, 6681 Aufrufe, 9 Kommentare

Ich wende mich wieder an die community, weil ich weiß, dass ich hier sicher eine antowort bekommen! Diesmal habe ich schon einen Quelltext nur irgendwas funktioniert nicht wie immer...

Hallo! Also ich versuche alle dateien in einem verzeichnis umzubenennen und zwar indem ich die " " (leerschritte) in den dateinamen durch "_" ersetze.

ich dachte mir, zuerst einmal die liste in eine datei schreiben, die namen als variable festlegen und den leerschirtt durch einen unterstrich ersetzen und in eine zweite datei schreiben. das funktioniert noch super. wenn ich die datei anschaue ist alles super.
so dann will ich mit einer for /f die zweite liste wieder in variable speichern. geht auch noch. doch der letzte schritt ist irgendwo fehlerhaft.

01.
dir /b *.txt>>list.tmp 
02.
for /f "delims=: tokens=1,2*" %%a in ('findstr /n . "list.tmp"') do (set znt=%%a 
03.
set list%%a=%%b 
04.
setlocal enabledelayedexpansion 
05.
echo !list2%%a: =^_!>>list2.tmp 
06.
endlocal 
07.
08.
 
09.
for /f "delims=: tokens=1,2*" %%a in ('findstr /n . "list.tmp"') do (set list2%%a=%%b) 
10.
 
11.
for /l %%a in (1, 1, %znt%) do (ren %%list%%a%% %%list2%%a%%)
hier ist, was ausgespuckt wird:

01.
C:\Users\grandits\Desktop\Batch>2 
02.
 
03.
C:\Users\grandits\Desktop\Batch>dir /b *.txt 1>>list.tmp 
04.
 
05.
C:\Users\grandits\Desktop\Batch>for /F "delims=: tokens=1,2*" %a in ('findstr /n 
06.
 . "list.tmp"') do ( 
07.
set znt=%a 
08.
 set list%a=%b 
09.
 setlocal enabledelayedexpansion 
10.
 echo !list2%a: =_! 1>>list2.tmp 
11.
 endlocal 
12.
13.
 
14.
C:\Users\grandits\Desktop\Batch>( 
15.
set znt=1 
16.
 set list1=Merle Haggard.txt 
17.
 setlocal enabledelayedexpansion 
18.
 echo !list21: =_! 1>>list2.tmp 
19.
 endlocal 
20.
21.
 
22.
C:\Users\grandits\Desktop\Batch>for /F "delims=: tokens=1,2*" %a in ('findstr /n 
23.
 . "list2.tmp"') do (set list2%a=%b ) 
24.
 
25.
C:\Users\grandits\Desktop\Batch>(set list21=Merle_Haggard.txt) 
26.
 
27.
C:\Users\grandits\Desktop\Batch>for /L %a in (1 1 1) do (ren %list%a% %list2%a% 
28.
29.
 
30.
C:\Users\grandits\Desktop\Batch>(ren %list1% %list21% ) 
31.
Das System kann die angegebene Datei nicht finden.
wie kann ich das problem beheben??

MFG alexander
Mitglied: bastla
16.08.2010 um 09:21 Uhr
Hallo Daffman!

Sollte einfacher gehen:
01.
@echo off & setlocal 
02.
pushd "D:\Verzeichnis mit den umzubenennenden Dateien" 
03.
for /f "delims=" %%i in ('dir /b /a-d "* *.*" 2^>nul') do set "Datei=%%i" & call :ProcessFile "%%i" 
04.
popd 
05.
goto :eof 
06.
 
07.
:ProcessFile 
08.
echo ren %1 "%Datei: =_%" 
09.
goto :eof
Wenn's passt, das "echo" vor dem "ren" entfernen.

Falls es tatsächlich keine "!" in den Dateinamen gibt, sollte auch
01.
@echo off & setlocal enabledelayedexpansion 
02.
pushd "D:\Verzeichnis mit den umzubenennenden Dateien" 
03.
for /f "delims=" %%i in ('dir /b /a-d "* *.*" 2^>nul') do set "Datei=%%i" & echo ren "%%i" "!Datei: =_!" 
04.
popd
genügen (beides ungetestet) ...

Und wenn Du eine Liste der umbenannten Dateien brauchst, dann eben an passender Stelle ein
>>D:\Umbenannt.txt echo %%i
einbauen.

Grüße
bastla
Bitte warten ..
Mitglied: Daffman
16.08.2010 um 10:29 Uhr
Hallo!

Ich danke Dir für Deine schnelle antwort, ich habe das erste verwendet, weil es sicherer ist und ich nicht garantrieren kann, dass keine "!" vorhanden sind.

SUPER danke!

MFG alexander
Bitte warten ..
Mitglied: Daffman
16.08.2010 um 12:46 Uhr
eine frage habe ich noch, wenn ich das in die andere richtrung mchen will, was empfiehlst Du da??

ich habe es mit:

01.
setlocal 
02.
set weg=%CD% 
03.
set weg=%weg:~0,-12% 
04.
pushd %weg% 
05.
for /f "delims=" %%i in ('dir /b /a-d "* *.*" 2^>nul') do set "Datei=%%i" & call :ProcessFile2 "%%i" 
06.
popd 
07.
goto :FERTIG 
08.
 
09.
:ProcessFile2 
10.
ren %1 "%Datei:_= %" 
11.
goto :eof 
12.
:FERTIG
oder muss ich es mit ^_ machen??

nochmals mit SFG Alexander
Bitte warten ..
Mitglied: bastla
16.08.2010 um 17:47 Uhr
Hallo Daffman!

Das "ren" müsste schon passen; die Zeilen 2 und 3 sind mir etwas suspekt - was sollen die denn bewirken (was nicht ev auch ein "pushd .." könnte)?

Grüße
bastla
Bitte warten ..
Mitglied: Daffman
17.08.2010 um 11:20 Uhr
Hallo bastla!

naja ich dachte mir, dass ich das Verzeichnis nicht auschreiben muss, in dem alle umbenannt wird, verwende ich einfach eine Variable! Damit ist es auch leichter, wenn ich es auf einem anderen Computer ausführen will!

wenn ich jetzt dieses Script ausführe, kommt dann für die 2, 3, 4. zeile das:

01.
C:\Users\Desktop\Batch\musikfinden>set weg=C:\Users\Desktop\Batch\musikfinden 
02.
 
03.
C:\Users\Desktop\Batch\musikfinden>set weg=C:\Users\Desktop\Batch 
04.
 
05.
C:\Users\Desktop\Batch\musikfinden>pushd "C:\Users\Desktop\Batch"
MFG alexander

PS: noch eine frage habe ich: wenn ich jetzt mehrere Zeichen ersetzen wollen würde, muss ich das dann einfach dranhängen? so:

01.
ren %1 "%Datei: =_%"&ren %1 "%datei:'ve= have%&ren %1 %Datei:ü=³%
nochmals MFG alexander
Bitte warten ..
Mitglied: bastla
17.08.2010 um 12:20 Uhr
Hallo Daffman!

Variablen sind zumeist sinnvoll - Deine Zeile 3 macht den Vorteil aber wieder zunichte, da Du eine Konstante (12) verwendest; deshalb die Frage, "wohin" Du damit willst.

Da in diesem Fall die Variable nur ein einziges Mal (für den Verzeichniswechsel mit "pushd") verwendet wird, könntest Du allerdings den Pfad auch einfach in Zeile 4 angeben. Für den Spezialfall, dass Du das "Eltern-Verzeichnis" ansteuern willst, genügt dann tatsächlich ein "pushd .." ...
Wenn Du mehrere Ersetzungen benötigst könnte das so aussehen:
01.
set "Datei=%Datei: =_%" 
02.
set "Datei=%Datei:'ve= have%" 
03.
set "Datei=%Datei:ü=³%" 
04.
ren %1 "%Datei%"
Grüße
bastla
Bitte warten ..
Mitglied: Daffman
17.08.2010 um 13:00 Uhr
Zitat von bastla:
Da in diesem Fall die Variable nur ein einziges Mal (für den Verzeichniswechsel mit "pushd") verwendet wird,
könntest Du allerdings den Pfad auch einfach in Zeile 4 angeben. Für den Spezialfall, dass Du das
"Eltern-Verzeichnis" ansteuern willst, genügt dann tatsächlich ein "pushd .." ...

jaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - vielen dank das brauche ich!

das mit dem umbenennten funktioniert in die eine richtung, aber in die andere nicht mehr
die dateien mit "_" im Elternverzeichnis sollen wieder auf ein " " gebracht werden:

01.
@echo off & setlocal 
02.
pushd.. 
03.
for /f "delims=" %%i in ('dir /b /a-d "* *.*" 2^>nul') do set "Datei=%%i" & call :ProcessFile "%%i" 
04.
popd 
05.
goto :eof 
06.
 
07.
:ProcessFile 
08.
set datei=%datei:_= %" 
09.
echo ren %1 "%Datei%" 
10.
goto :eof
was ist daran falsch???

LG alexander
Bitte warten ..
Mitglied: bastla
17.08.2010 um 13:09 Uhr
Hallo Daffman!

Abgesehen vom fehlenden Anführungszeichen in der Zeile 8 sorgt das "optimierte" (hatte ich oben nicht erwähnt)
dir "* *.*"
dafür, dass nur Dateien mit Leerzeichen im Namen gesucht werden - solche gibt's aber nicht mehr ...

... daher sollte es mit dieser Zeile 3 dann klappen:
for /f "delims=" %%i in ('dir /b /a-d 2^>nul') do set "Datei=%%i" & call :ProcessFile "%%i"
Grüße
bastla
Bitte warten ..
Mitglied: Daffman
17.08.2010 um 13:38 Uhr
SUPER danke, das war genau das richtige!

MFG alexander

PS: ich danke dir soooo sehr für deine vielen Hilfen!!! und ich hoffe ich darff mich nocheinmal melden, wenn ich frageb hätte?
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...