Batch soll namentlich nicht bekanntes Verzeichnis finden und umbenennen
1)
Es geht um Folgendes:
Ich habe einen Ordner, in dem befinden sich
-ein paar Dateien, die für den Vorgang unwichtig sind
-ein "Ordner1", dessen Name nicht bekannt ist, in dem sich ein paar Unterordner befinden, deren Namen allerdings schon bekannt sind (subdir1, subdir2, subdir3,...)
-ein "Ordner2", dessen Name bekannt ist
-und die Batchdatei für den Vorgang.
Was ich vorhabe:
Ich möchte den Ordner1 automatisch in "neuername" umbenennen lassen. Damit für diesen vorher eine Variable gesetzt werden kann, sind die Bedingungen:
-in seinem Namen darf nicht "Ordner2"vorkommen
-einer der oben genannten Unterordner subdir1, subdir2 etc. sollte darin enthalten sein
Falls mehrere Ordner vorhanden sein sollten, die diese Bedingungen erfüllen, sollte die Batch dem User eine Auswahlmöglichkeit bieten.
Ich bedanke mich im Vorraus für Hilfe und/oder ein paar Tips!
Es geht um Folgendes:
Ich habe einen Ordner, in dem befinden sich
-ein paar Dateien, die für den Vorgang unwichtig sind
-ein "Ordner1", dessen Name nicht bekannt ist, in dem sich ein paar Unterordner befinden, deren Namen allerdings schon bekannt sind (subdir1, subdir2, subdir3,...)
-ein "Ordner2", dessen Name bekannt ist
-und die Batchdatei für den Vorgang.
Was ich vorhabe:
Ich möchte den Ordner1 automatisch in "neuername" umbenennen lassen. Damit für diesen vorher eine Variable gesetzt werden kann, sind die Bedingungen:
-in seinem Namen darf nicht "Ordner2"vorkommen
-einer der oben genannten Unterordner subdir1, subdir2 etc. sollte darin enthalten sein
Falls mehrere Ordner vorhanden sein sollten, die diese Bedingungen erfüllen, sollte die Batch dem User eine Auswahlmöglichkeit bieten.
Ich bedanke mich im Vorraus für Hilfe und/oder ein paar Tips!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 20439
Url: https://administrator.de/contentid/20439
Ausgedruckt am: 22.11.2024 um 00:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
als erste würde ich die Verzeichniste einlesen und in ein TEXT-File schreiben 'DIR *. > DIR.TXT'.
Dann das Textfile durchsuchen 'FOR @for /f "tokens=3" %%i in ('dir.txt ^|find "Ordner1" ') do SET %%i . Wenn subdirX gefunden wird einfach die Zeile in den String geschreiben.
Da nun der Pfad und der Name von Ordner1 bekannt sind, einfach umbenennen.
Um das ganze jetzt noch mit Auswahlmenü zu realisieren, einfach via ECHO eine neue Batch erzeugen, die das Menu enthält und via CHOICE abfrägt, was getan werden soll.
als erste würde ich die Verzeichniste einlesen und in ein TEXT-File schreiben 'DIR *. > DIR.TXT'.
Dann das Textfile durchsuchen 'FOR @for /f "tokens=3" %%i in ('dir.txt ^|find "Ordner1" ') do SET %%i . Wenn subdirX gefunden wird einfach die Zeile in den String geschreiben.
Da nun der Pfad und der Name von Ordner1 bekannt sind, einfach umbenennen.
Um das ganze jetzt noch mit Auswahlmenü zu realisieren, einfach via ECHO eine neue Batch erzeugen, die das Menu enthält und via CHOICE abfrägt, was getan werden soll.
Moin m3gaTefyt,
irgendwie halte ich Dein Problem ja für lösbar und würde Dir auch gern helfen.. aber für mich sind die Infos noch ein bisschen unzureichend...
Kannst Du mal ein Beispiel posten bitte (oder per pn senden, wenn es SEHR geheim ist) ?
Wann, wie, warum (per Knopfdruck oder immer um Mitternacht oder..) soll denn dieses Umbenennen starten?
Wo kommt denn "neuername" her?
Wie unterscheidest Du umzubenennende und umbenannte Ordner?
Oder, was um Himmels Willen steckt überhaupt dahinter?
Sorry, wenn ich manchmal langsamer begreife
Biber
irgendwie halte ich Dein Problem ja für lösbar und würde Dir auch gern helfen.. aber für mich sind die Infos noch ein bisschen unzureichend...
Kannst Du mal ein Beispiel posten bitte (oder per pn senden, wenn es SEHR geheim ist) ?
Wann, wie, warum (per Knopfdruck oder immer um Mitternacht oder..) soll denn dieses Umbenennen starten?
Wo kommt denn "neuername" her?
Wie unterscheidest Du umzubenennende und umbenannte Ordner?
Oder, was um Himmels Willen steckt überhaupt dahinter?
Sorry, wenn ich manchmal langsamer begreife
Biber
Moin m3gaTefyt,
na, dabei kann ich helfen - eine Tilde an der richtigen Stelle entfernt die umgebenden Anführungszeichen.
Demo vom CMD-Prompt aus: (mein Prompt dargestellt durch "$cmd$")
Hoffe, es ist erkennbar, was ich zeigen wollte und lässt sich verwerten.
Grüße
Biber
na, dabei kann ich helfen - eine Tilde an der richtigen Stelle entfernt die umgebenden Anführungszeichen.
Demo vom CMD-Prompt aus: (mein Prompt dargestellt durch "$cmd$")
$cmd$type eineIni.ini
blablablubb
"AutoLoginUser" "Account123"
$cmd$for /F "skip=2 tokens=1,2" %i in ('find /i "AutoLoginUser" eineIni.ini') do @echo %i %j
"AutoLoginUser" "Account123"
$cmd$for /F "skip=2 tokens=1,2" %i in ('find /i "AutoLoginUser" eineIni.ini') do @echo %~i %~j
AutoLoginUser Account123
### Demnach müsste es in Deinem Fall so funktionieren:
For /F "skip=3 tokens=2*" %%I in (config\config.txt) do set "acc_folder=%%~I"
Grüße
Biber
Uuuups, m3gaTefyt,
There are more things
in heaven and earth, Horatio,
Than are dreamt of in your philosophy..
(W. Shakespeare, Hamlet, auch ohne 64-Bit-Betriebssystem)
Mit anderen Worten - ich glaube Dir das.. aber nachvollziehen kann ich es nicht.. *kopfschüttel*
Allerdings finde ich Deine Variablen-Ermittlung über Zeilen-Abzählen ("skip=3") auch etwas wackelig.
Wenn Du einen eindeutigen Identifier, ein Schlüsselwort hast wie dieses "AutoLoginUser", dann geh lieber den Weg über "find" wie oben skizziert und nimm wenigstens die richtige Zeile. Wo die "0" nun herkommt... dazu müsstest Du mir mal die config.txt zeigen.
Gegen ein nochmaliges Anfassen spricht natürlich die Regel Nr. 1 unserer Branche ...never change a running system...
Schönen Abend
Biber
Nur jetzt kommt bei mir "0" raus als Variable..
in heaven and earth, Horatio,
Than are dreamt of in your philosophy..
(W. Shakespeare, Hamlet, auch ohne 64-Bit-Betriebssystem)
Mit anderen Worten - ich glaube Dir das.. aber nachvollziehen kann ich es nicht.. *kopfschüttel*
Allerdings finde ich Deine Variablen-Ermittlung über Zeilen-Abzählen ("skip=3") auch etwas wackelig.
Wenn Du einen eindeutigen Identifier, ein Schlüsselwort hast wie dieses "AutoLoginUser", dann geh lieber den Weg über "find" wie oben skizziert und nimm wenigstens die richtige Zeile. Wo die "0" nun herkommt... dazu müsstest Du mir mal die config.txt zeigen.
Gegen ein nochmaliges Anfassen spricht natürlich die Regel Nr. 1 unserer Branche ...never change a running system...
Schönen Abend
Biber