Grund Frage:Umbenennung Ordner (kurz) nach der Erstellung in einer Schleife mit New Time Stamps - Batch File
Wie kann ich einen kürzlich erstellten Ordner nehmen (in der gleichen Partie getan), dann Dinge zu tun in der Ordner, dann benennen Sie den Ordner mit einem Zeitstempel und wiederholen Sie mit einer neuen Datei einen neuen Zeitstempel generieren?
Meine Batch-Code Gliederung und Expected und tatsächliche Ergebnisse:
Ich bin eine Batchdatei erstellen, die in einer Schleife durch die Schritte unten, für alle Dateien in einem Verzeichnis.
Schritt 1 (funktioniert): Datei in einem Verzeichnis durchlaufen und Daten extrahieren, diese Daten werden dann in einen erstellten Ordner ausgegeben, der den Namen "output" hat (der in diesem Schritt erstellt wird).
Schritt 2 (funktioniert): Ich muss in diesen "output" -Ordner gehen und "stuff" mit den Daten (ich habe bereits ein Skript, das in diesen neuen Dateipfad von "output" und "does stuffs" geht))
Schritt 3 (nicht funktioniert): den Ordner „Ausgang“ umbenennen „output_TimeStamp“ (Dies ist, wo mein Problem ist, meine Schleife die erstellte Zeitstempel # 1 des ersten Ordners nimmt und versucht, alle zu nennen Ordner Zeitstempel # 1)
Schritt 4 (halbArbeits): gehen Sie zurück zu Schritt 1 auf der nächsten Datei (Loop zu arbeiten, bis alle Dateien im Verzeichnis fertig sind)
My-Code (und zumindest einer meiner Versuche)
::Loop to perform tasks on files in current directory
for /R %%f in (*.mp4) do (
::Extracts data from file and leaves it in a created output folder
start "" /w Sample.exe --clip "%%f" --verbose 2 --outDir output
::This goes in created output folder and does stuff to data
start "" /w C:\Users\user\Documents\winPython\WinPython-64bit-3.4.4.2\python-3.4.4.amd64\python.exe "%CD%\DoStuff.py" "%CD%\output\folder\folder2\Do.file"
::This is supposed to rename the folder with a time stamp
rename output output-%date:~4,2%-%date:~7,2%-%date:~10,4%_at_%time:~0,2%%time:~3,2%
::This is what my research came to, which increments a number in the timestamp but doesnt work
set N=0
set FILENAME=output-%date:~4,2%-%date:~7,2%-%date:~10,4%_at_%time:~0,2%%time:~3,2%.%N%
:loop
set /a N+=1
set FILENAME=output-%date:~4,2%-%date:~7,2%-%date:~10,4%_at_%time:~0,2%%time:~3,2%.%N%
if exist %FILENAME% goto :loop
echo You can safely use this name %FILENAME% to create a new file
)
Meine Forschung
ich zahlreiche Dinge ausprobiert haben und verwendet, um die Verbindungen How do I increment a folder name using Windows batch? und cmd line rename file with date and time.
Ich denke, das sollte viel einfacher sein, als diese Frage aufzuschreiben.
1. Verwenden Sie nicht 'in einer Schleife goto', da sie die Schleife Kontext bricht; Sie könnten den Code, der 'goto' enthält, und das Label in ein 'Call'-Unterprogramm schreiben. 2. Vermeiden Sie '::' Kommentare (die eigentlich ungültige Labels darstellen) in Schleifen, da sie zu unerwarteten Ergebnissen führen können; Verwenden Sie stattdessen "rem". 3. Aktivieren Sie [verzögerte Erweiterung] (http://ss64.com/nt/delayedexpansion.html) für "date" - und "time" -Variablen, da sie sonst immer auf die Werte erweitert werden, die beim Analysieren der gesamten Schleife vorhanden sind. – aschipfl
@aschipfl danke für deine antwort. Ich habe deine Änderungen vorgenommen, aber ich stehe immer noch vor Hürden. Ich weiß nicht genau, was Sie meinen, indem Sie die Unterroutine [call] verwenden, da ich sehr neu bin, Batch zu verwenden. Ich habe die anderen Änderungen vorgenommen. Wenn es einfacher ist, können Sie mir sagen, wie ich nur eine inkrementierende Zahl am Ende des endgültigen Ordners nach dem Datum hinzufügen kann – altairya
Es würde helfen, wenn Sie Ihren aktuellen Code in der Frage veröffentlichen und sagen, wie es Ihre nicht erfüllt Erwartung. Fügen Sie genaue Fehlermeldungen hinzu, wenn sie angezeigt werden. – lit