Top-Themen

Aktuelle Themen (A bis Z)

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

gelöst Umbenennen mit Abfrage

Mitglied: Spidi-25

Spidi-25 (Level 1) - Jetzt verbinden

11.09.2010, aktualisiert 18.10.2012, 3826 Aufrufe, 13 Kommentare

Hallo alle zusammen,

bin gerade am üben und verstehen von Batch´s

01.
@echo off 
02.
 
03.
FOR  %%i IN (*.mp3) DO ( 
04.
  echo Dateinamen %%i umbenennen? 
05.
set new= 
06.
set /p new= neuen Dateinamen bitte eingeben: 
07.
ren "%%i" "%new%" 
08.
)
was stimmt an meinem code nicht, ich bastle eine einfache Umbenennung mit Abfrage!

Grüße
Spidi-25
Mitglied: 60730
11.09.2010 um 23:54 Uhr
moin,

zum üben bitte die erste Zeile "wechlasern"

innerhalb von Schleifen gilt - die Variablen zuweisung klappert nicht ordentlich.
Dafür gibts delayed expansion und ! statt %.

btw:
echo Dateinamen %%i umbenennen?
Naja die Zeile ist zwar hübsch, anzusehen, aber wenn du kein
if not "!new!"=="" ren usw..
reinmontierst - nicht hübsch

Gruß
Bitte warten ..
Mitglied: Spidi-25
12.09.2010 um 02:00 Uhr
Hallo TimoBeil

danke für die Tips mit folgendem code

01.
@echo off & setlocal enableDelayedExpansion   
02.
for %%i in ("*.mp3") do ( 
03.
  echo Dateinamen %%i umbenennen? 
04.
     set "neu=" 
05.
set /p neu= neuen Dateinamen bitte eingeben: 
06.
ren "%%i" "!neu!" 
07.
08.
pause
wird umbenannt, aber die Dateiendung fehlt mir.

mit der Zeile kann ich noch nicht viel anfangen, bitte um Erläuterung.
if not "!new!"=="" ren usw..
Bitte warten ..
Mitglied: bastla
12.09.2010 um 02:28 Uhr
Hallo Spidi-25!
if not "!new!"=="" ren usw.
ist so zu verstehen, dass ein Umbenennen nur sinnvoll ist, wenn auch ein neuer Name eingegeben wurde bzw, dass eben keine Eingabe (= nur "Enter") bedeutet, dass der Name nicht geändert werden soll ...

Zusammen mit dem Beibehalten der Endung könnte die Zeile 6 dann so aussehen:
if not "!neu!"=="" ren "%%i" "!neu!.*"
Zu beachten wäre allerdings, dass bei "!" im Namen unerwünschte Effekte auftreten können und auch die Art der Schleife zu Überraschungen führen könnte - daher würde ich eher zur folgenden Variante greifen:
01.
@echo off & setlocal 
02.
for /f "delims=" %%i in ('dir /b *.mp3') do call :ProcessFile "%%i" 
03.
pause 
04.
goto :eof 
05.
 
06.
:ProcessFile 
07.
echo\ 
08.
set "neu=" 
09.
set /p neu=Neuen Dateinamen fuer %1 bitte eingeben:  
10.
if defined neu ren %1 "%neu%.*" 
11.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Friemler
12.09.2010 um 03:16 Uhr
Hallo bastla,

eine kleine Fehlerquelle bleibt bei Deinem Code: Wenn der Dateiname ein ^ (Carret) enthält, verdoppelt der Kommandointerpreter dieses Zeichen bei der Übergabe von %%i. Aus Ein^Test.mp3 wird also in ProcessFile Ein^^Test.mp3. Wenn der Dateiname ein % (Prozent) enthält, kommt es auch zu Fehlern. Deshalb würde ich es lieber so machen:
01.
@echo off & setlocal 
02.
for /f "delims=" %%i in ('dir /b *.mp3') do ( 
03.
  set "alt=%%i" 
04.
  call :ProcessFile 
05.
06.
pause 
07.
goto :eof 
08.
 
09.
:ProcessFile 
10.
set "neu=" 
11.
echo\ 
12.
set /p "neu=Neuen Dateinamen fuer %alt% bitte eingeben: " 
13.
if defined neu ren "%alt%" "%neu%.*" 
14.
goto :eof
Gruß
Friemler
Bitte warten ..
Mitglied: bastla
12.09.2010 um 09:00 Uhr
@Friemler
Stimmt - wobei ein Name wohl eher etwa "%20" enthält als dass er zB "(^_^).mp3" lautet ...

Eigentlich müsste auch noch der eingegebene neue Name geprüft werden - und dann wäre ich jedenfalls bei VBS angekommen ...

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
12.09.2010 um 10:51 Uhr
Hallo Spidi-25,

um deine vergessene Extension beim neuen Namen anzufügen kannst du diese Zeile :
If defined neu If /i "%neu:~-4%" NEQ ".mp3" set "neu=%neu%.mp3"
In Friemlers Code zwischen den Zeilen 12 und 13 einfügen.

Gruß
LotPings
Bitte warten ..
Mitglied: bastla
12.09.2010 um 11:39 Uhr
Hallo LotPings!
Dann wäre allerdings der Stern in Zeile 13 überflüssig (und eine Variable für die Extension sinnvoll) ...

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
12.09.2010 um 12:14 Uhr
Hast Recht, bastla,

hab ich übersehen.

Schönen Sonntag noch!

Gruß
LotPings
Bitte warten ..
Mitglied: Friemler
12.09.2010 um 12:49 Uhr
Hallo bastla,

VBS ist nicht unbedingt notwendig. Die Zeichen ^%& im neuen Dateinamen machen bei meinem Code sowieso keine Probleme. Allerdings dürfen ja die Zeichen
*?:<>|\/"
in Dateinamen nicht vorkommen. Deshalb hier noch eine Ergänzung, die darauf prüft:
01.
@echo off & setlocal 
02.
 
03.
for /f "delims=" %%i in ('dir /b *.mp3') do ( 
04.
  set "alt=%%i" 
05.
  call :ProcessFile 
06.
07.
pause 
08.
goto :eof 
09.
 
10.
 
11.
:ProcessFile 
12.
set "neu=" 
13.
echo\ 
14.
set /p "neu=Neuen Dateinamen fuer %alt% bitte eingeben: " 
15.
 
16.
if not defined neu goto :eof 
17.
 
18.
set "neu=%neu:"=*%" 
19.
for /f %%n in ('set /p "=%neu%" ^<NUL ^| findstr "[\*?:<>|\\/]"') do ( 
20.
  echo\ & echo Ein Dateiname darf keines der Zeichen *?^<^>^|\/:^" enthalten! & pause>NUL 
21.
  goto :ProcessFile 
22.
23.
 
24.
ren "%alt%" "%neu%.*" 
25.
goto :eof
Das separate Ersetzen von " durch * in Zeile 18 habe ich eingefügt, da es mir nicht möglich war, das Anführungszeichen in die Zeichenmenge von FINDSTR aufzunehmen, ohne das es zu irgendwelchen Fehlern bei problematischen Zeichen kam.

Gruß
Friemler
Bitte warten ..
Mitglied: Spidi-25
12.09.2010 um 13:11 Uhr
hallo zusammen und danke erstmals,

das wäre jetzt der code ob wohl ich noch nicht alle verstehe.

01.
@echo off & setlocal  
02.
for /f "delims=" %%i in ('dir /b *.mp3 *.wave') do (  
03.
  set "alt=%%i"  
04.
  call :ProcessFile  
05.
)  
06.
goto :eof  
07.
 
08.
:ProcessFile  
09.
set "neu="  
10.
echo\  
11.
set /p "neu=Neuen Dateinamen fuer %alt% bitte eingeben: " 
12.
If defined neu If /i "%neu:~-4%" NEQ ".*" set "neu=%neu%.*" 
13.
if defined neu ren "%alt%" "%neu%"   
14.
goto :eof
habe die Zeile 6 Pause entfernt, war nur für Übungszwecken gedacht.
in Zeile 12 habe ich .mp3 gegen .* getauscht da ein weiteres Format, ist das richtig so?

Kann man die Eingabe des neuen namens auch unterhalb der fuer bringen und zwar so

01.
Neuen Dateinamen fuer (Alter Name) bitte eingeben: 
02.
                      (Neuen Namen)

goto :eof
was bedeutet die zeile?

muss bei call :ProcessFile immer :ProcessFile drin stehen?

Könnte man die komplette Liste der Befehle von CMD.exe wie z.B. die For/? Erklärung Drucken?

Schönen Sonntag ebenfalls!

Grüße
Spidi-25
Bitte warten ..
Mitglied: Friemler
12.09.2010 um 13:49 Uhr
Hallo Spidi-25,

Zeile 12 kannst Du komplett rauswerfen, dann aber Zeile 13 wieder in
01.
if defined neu ren "%alt%" "%neu%.*"
ändern. Wenn Du in Zeile 12 auf .* prüfst, ist das sowieso falsch, da Du eine Datei nicht mit der Erweiterung * versehen kannst. Die korrigierte Zeile 13 bewirkt durch "%neu%.*", das der REN-Befehl die alte Dateierweiterung beibehält. Du könntest Zeile 11 in
01.
set /p "neu=Bitte neuen Dateinamen für %alt% ohne Erweiterung eingeben: "
ändern.

Zitat von Spidi-25:
goto :eof
was bedeutet die zeile?
Das bewirkt einen Rücksprung aus dem Unterprogramm bzw. ein Beenden des Skripts, wenn er im Hauptprogramm ausgeführt wird. EOF ist eine vordefinierte Sprungmarke von CMD.EXE, die nicht angegeben werden muss und immer am Ende des Skripts liegt (EOF=End Of File).

Zitat von Spidi-25:
muss bei call :ProcessFile immer :ProcessFile drin stehen?
Nein, Du kannst Deine Unterprogramme natürlich nennen wie Du willst. Nur der Doppelpunkt muss immer angegeben werden, da er eine Sprungmarke kennzeichnet. Der Befehl call ProcessFile würde nach einer Batchdatei namens ProcessFile suchen.

Zitat von Spidi-25:
Könnte man die komplette Liste der Befehle von CMD.exe wie z.B. die For/? Erklärung Drucken?
Ja, einfach
01.
for /? > ForHelp.txt
an der Kommandozeile eingeben. Dann wird die Hilfe von FOR in die Datei ForHelp.txt im aktuell gesetzten Verzeichnis geschrieben.

Übrigens: Der Befehl HELP gibt eine komplette Liste aller CMD-Befehle aus. Mit folgendem Skript kannst Du Dir die Hilfe zu allen CMD-Befehlen in die Datei Help.txt schreiben lassen. Die Datei wird allerdings im ASCII-Format (damit arbeitet CMD) geschrieben, Notepad (arbeitet im ANSI-Format) zeigt die Umlaute falsch an. Zum Schreiben/Betrachten von Batch-Skripten einen Editor verwenden, der im DOS-/ASCII-Format arbeitet. Zur Not EDIT, den alten DOS-Editor von Microsoft, der immer noch in Windows enthalten ist.
01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
for /f "skip=2" %%h in ('help ^| findstr /b "[A-Z]"') do ( 
06.
  call :ProcessCommand "%%h" 
07.
08.
 
09.
endlocal 
10.
exit /b 
11.
 
12.
 
13.
:ProcessCommand 
14.
  (echo *************** 
15.
   echo * %~1 
16.
   echo *************** 
17.
   %~1 /? 
18.
   echo. 
19.
   echo. 
20.
   echo.) >> Help.txt 
21.
exit /b
Schönen Sonntag ebenfalls!
Dito

Grüße
Friemler

PS:: Schau Dir auch nochmal mein zweites Skript weiter oben an.
Bitte warten ..
Mitglied: bastla
12.09.2010, aktualisiert 18.10.2012
Hallo Spidi-25!

Soferne das mit dem "Drucken" nicht ganz wörtlich gemeint war, sieh Dir mal die beiden folgenden Threads an:
https://www.administrator.de/wissen/cmd-befehle-auf-einen-blick-19802.ht ...
https://www.administrator.de/forum/wer-kann-mir-alle-batch-befele-zeigen ...
Hinsichtlich der Verwendung von 2 Zeilen für die Eingabe kannst Du das ja etwa so gestalten:
01.
echo Neuen Dateinamen fuer %alt% bitte eingeben: 
02.
set /p "neu=               " 
Grüße
bastla
Bitte warten ..
Mitglied: Spidi-25
12.09.2010 um 22:12 Uhr
Hallo

Passt Perfekt Danke!!!

Grüße
Spidi-25
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Dateien Umbenennen
gelöst Frage von PLBot85Batch & Shell6 Kommentare

Hi, ich habe einen Ordner wo mehrer Dateien drin liegen. 20150316_121757_92636382965528_WMA1847GK62_TDOBB112.ddd 20150314_085730_73826383950256_WMA18263926_TDOBB236.ddd etc Die sollen jetzt mittels einer Batchdatei ...

Exchange Server
Powershell Archivmailbox abfrage Abfrage
Frage von Clubby84Exchange Server5 Kommentare

Hallo zusammen, möchte gerne eine Ausgabe in eine Datei haben, mit allen Mailboxen, bei denen das Archiv noch nicht ...

Batch & Shell

Umbenennen von Ordnernamen (anhand von Zeitstempel)

gelöst Frage von Zero90Batch & Shell7 Kommentare

Hallo, Es ist mal wieder so weit. Ich brauch wieder mal eure Hilfe. Momentan versuche ich eine Batch zu ...

Batch & Shell

Dateien verschieben und umbenennen

gelöst Frage von eazy-isiBatch & Shell12 Kommentare

Hallo zusammen, ich stehe vor folgender Herausforderung. Ich muss aus einem Verzeichnis Dateien in ein anderes Verzeichnis verschieben und ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

Grafikkarten & Monitore
4k EIZO Monitor, Fernseher und Splitter
Frage von LerxxeyGrafikkarten & Monitore9 Kommentare

Hallo Zusammen, vielleicht könnt ihr mir bei einem Problem helfen wo ich einfach nicht mehr weiterkomme Und zwar haben ...

TK-Netze & Geräte
Fax im Betrieb
Frage von gansa28TK-Netze & Geräte6 Kommentare

Hallo zusammen, Endlich wurden meine Gebete Erhört und der Rechner meines Bekannten dem ich etwas unter die Arme greife, ...

Humor (lol)
Nerd Zeitschrift gesucht
Frage von 2SeitenHumor (lol)6 Kommentare

Hey Zusammen, Ich suche eine Zeitschrift bei der es ums technische Basteln geht. Pc zusammenschrauben, Arduino Projekte, Server Tipps ...