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

Dateistring umbenennen

Frage Entwicklung Batch & Shell

Mitglied: chainsaw

chainsaw (Level 1) - Jetzt verbinden

13.03.2009, aktualisiert 16.03.2009, 3221 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 ..
Ä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 ...

Batch & Shell
Suchen und umbenennen
Frage von cgyflamezBatch & Shell4 Kommentare

Hallo zusammen Ich habe nun einen halben Tag gesucht und probiert, aber nichts gutes gefunden. Ich habe einen Ordner ...

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

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 5 StundenWindows 101 Kommentar

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 7 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner2 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Brainstorming, einfachste Option 1 getrenntes LAN (mit WAN zugang)
Frage von 132954LAN, WAN, Wireless13 Kommentare

Hi, folgendes: Wir bekommen eine Glasfaser Leitung, Und das sollte Optional so aussehen: Ein Modem/Router für das WAN, ein ...

Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen12 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...