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
GELÖST

Dateistring umbenennen

Frage Entwicklung Batch & Shell

Mitglied: chainsaw

chainsaw (Level 1) - Jetzt verbinden

13.03.2009, aktualisiert 16.03.2009, 3161 Aufrufe, 5 Kommentare

Hallo Gemeinde,

Ich möchte einen beliebigen String aus mehreren Dateien abfragen und diesen durch einen neuen ersetzten.
Das mache ich mit diesem Skript:

@echo off
set /p laufvar=Laufwerksbuchstabe angeben:
set /p verzvar=Ordner angeben:
if exist %laufvar%:\%verzvar% goto :los
if not exist %laufvar%:\%verzvar% goto :meldung
goto end

:los
cd %laufvar%:\%verzvar%
setlocal enabledelayedexpansion
set /p oldstr=Welcher String soll ersetzt werden?:
set /p newstr=Neuen String eingeben:
for %%i in (*%oldstr%*.*) do set x=%%i&ren "%%i" "!x:%oldstr%=%newstr%!"

Das funktioniert wunderbar - aber nur wenn ich Dateien auf der gleichen Festplattenpartition umbenennen möchte, auf der der Batch liegt.
Wähle ich ein anderes Laufwerk aus oder versuche Daten auf einem Netzlaufwerk umzubenennen, dann passiert gar nix.
Eine Fehlermeldung gibts auch nicht.
Kann das am setlocal Befehl liegen?
Vielleicht habt ihr eine Idee.

Schönes Wochenende
Gruß chainsaw
Mitglied: bastla
13.03.2009 um 15:23 Uhr
Hallo chainsaw!

Falls Du bei der Methode mit "cd" bleiben willst, wäre zumindest noch ein zusätzliches "/d" anzuraten - also:
cd /d %laufvar%:\%verzvar%
Die "setlocal"-Zeile wäre übrigens gleich am Anfang des Batches besser platziert (damit keine Variablen-Leichen nach dem Ende des Batches übrig bleiben).

Grüße
bastla
Bitte warten ..
Mitglied: chainsaw
16.03.2009 um 09:59 Uhr
Hallo bastla,

Du bist genial - jetzt funktioniert`s. Kleiner Parameter, große Wirkung!

Nur noch zwei kleine Zwischenfragen:
Du schreibst "falls du bei "cd" bleiben willst...
Was wäre die (bessere?) Alternative - chdir?

Elegant wäre jetzt, einen Pfad in einer .ini-Datei zu hinterlegen, und diesen dann im Batch zu verwenden.
Ih hab das versucht - leider auch nur mit Teilerfolg:

1) @echo off
2) setlocal enabledelayedexpansion
3)
4) for /F "Tokens=*" %%i in (rename.ini) do call :los "%%i"
5) :Los
6) echo Im Verzeichnis %1 wird umbenannt:
7) cd /d "%1"
8) set /p oldstr=Welcher String soll ersetzt werden?:
9) set /p newstr=Neuen String eingeben:
10) for %%i in (*%oldstr%*.*) do set x=%%i&ren "%%i" "!x:%oldstr%=%newstr%!"
11)
12) :End

Das haut hin, Zeile 6 zeigt an, dass er im Verzeichnis C:\temp umbenennt, wie in der ini hinterlegt. Aber nach dem Umbenennen beginnt der Batch von neuem, zeigt aber keine Variable mehr an.
Bei Zeile 6 heitß es dann: "Im verzeichnis wird umbenannt:"
Ich kann dann weiterhin umbenennen und erst dann beendet sich der Batch.
Verträgt sich hier das %%i in den beiden Schleifen nicht?

Schönen Tag und vielen Dank
Gruß chainsaw
Bitte warten ..
Mitglied: Biber
16.03.2009 um 11:28 Uhr
Moin chainsaw,

Du schreibst "falls du bei "cd" bleiben willst...
Was wäre die (bessere?) Alternative - chdir?
Das wäre ein ähnlicher Kalauer wie "Helmut statt Helmut" im Bundeskanzlerwahlkampfduell Schmidt vs. Kohl.
Eine echte Alternative (also fürs CD /D) wäre das Gespann PushD / PopD zum zum rekonstuierbaren Lw/Verzeichniswechsel. Siehe PushD /? und PopD /?

Elegant wäre jetzt, einen Pfad in einer .ini-Datei zu hinterlegen, ....
01.
@echo off  & setlocal enabledelayedexpansion 
02.
 
03.
for /F "Delims=" %%i in (rename.ini) do call :los "%%i"  
04.
::----- hier ist der Batch logisch zu Ende. 
05.
:: ----da aber noch Codezeilen folgen, muss hier ein "goto :eof" stehen 
06.
GoTo :eof 
07.
::----- hier ist der Batch auch für die Cmd.exe zu Ende. 
08.
 
09.
 :Los 
10.
echo Im Verzeichnis %1 wird umbenannt: 
11.
.... 
12.
::..... usw... 
13.
goto :eof
Grüße
Biber
Bitte warten ..
Mitglied: bastla
16.03.2009 um 11:45 Uhr
Hallo chainsaw!
Du schreibst "falls du bei "cd" bleiben willst...
Was wäre die (bessere?) Alternative - chdir?
Du könntest den Wechsel des Verzeichnisses durch die Verwendung eines vollständigen Pfades einsparen:
for %%i in ("%laufvar%:\%verzvar%\*%oldstr%*.*") do set "x=%%~nxi"&ren "%%i" "!x:%oldstr%=%newstr%!"
Grüße
bastla
Bitte warten ..
Mitglied: chainsaw
16.03.2009 um 11:53 Uhr
Hallo Biber

Das wäre ein ähnlicher Kalauer wie "Helmut statt
Helmut" im Bundeskanzlerwahlkampfduell Schmidt vs. Kohl.

Ich bin ja noch lernfähig (das rede ich mir jedenfalls selbst immer wieder ein)

Das habe ich mittlerweile ergurgelt:

set /p varname=<rename.ini

funktioniert auch.

Danke dir, Beitrag gelöst

Gruß und schöne Woche
chainsaw
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Dateiname entsprechend einem um x-Ebenen übergeordeten Ordnernamen umbenennen (3)

Frage von Booster07 zum Thema Batch & Shell ...

Batch & Shell
Pdf Files umbenennen (7)

Frage von Sacred zum Thema Batch & Shell ...

Windows Server
gelöst WSUS SUSDB umbenennen (6)

Frage von vessev zum Thema Windows Server ...

Microsoft Office
gelöst Per VBA im Verzeichniss dateien mit Wildcard umbenennen (4)

Frage von usenussi zum Thema Microsoft Office ...

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 ...