Windows 使用新的时间戳在循环中创建后重命名文件夹(不久)-批处理文件
基本问题: 如何获取最近创建的文件夹(在同一批中完成),然后在该文件夹中执行操作,然后使用时间戳重命名该文件夹,并使用生成新时间戳的新文件重复操作 我的批处理代码大纲和预期与实际结果的对比: 我正在为目录中的所有文件创建一个批处理文件,该文件将循环执行以下步骤 步骤1(工作):遍历目录中的文件并提取数据,然后将这些数据输出到一个已创建的文件夹中,该文件夹必须命名为“output”(在该步骤中创建) 第2步(工作):我必须进入这个“输出”文件夹并用数据“做一些事情”(我已经有一个脚本进入这个新的文件路径“输出”和“做一些事情”) 步骤3(不工作):将文件夹“output”重命名为“output#u TimeStamp”(这就是我的问题所在,我的循环使用创建的第一个文件夹的TimeStamp#1,并尝试将所有文件夹命名为TimeStamp#1) 步骤4(半工作):返回步骤1处理下一个文件(循环直到目录中的所有文件都完成) 我的代码(至少有一次尝试) 我的研究 我尝试了很多方法,并使用了链接 和。Windows 使用新的时间戳在循环中创建后重命名文件夹(不久)-批处理文件,windows,batch-file,cmd,Windows,Batch File,Cmd,基本问题: 如何获取最近创建的文件夹(在同一批中完成),然后在该文件夹中执行操作,然后使用时间戳重命名该文件夹,并使用生成新时间戳的新文件重复操作 我的批处理代码大纲和预期与实际结果的对比: 我正在为目录中的所有文件创建一个批处理文件,该文件将循环执行以下步骤 步骤1(工作):遍历目录中的文件并提取数据,然后将这些数据输出到一个已创建的文件夹中,该文件夹必须命名为“output”(在该步骤中创建) 第2步(工作):我必须进入这个“输出”文件夹并用数据“做一些事情”(我已经有一个脚本进入这个新的文
我觉得这应该比写这个问题容易得多。没有检查脚本的逻辑,我修复了我在中提到的以下问题:
goto:Label
中断了括号内代码块的上下文,您的for
循环构成了这样一个块;因此,在:Label
处继续执行,但执行方式不再是块中。您可以通过将包含goto
和:Label
的代码部分放置在子例程中,并通过call
命令调用它来解决这个问题;这会将当前块上下文隐藏在goto
中::
注释在循环或其他括号内的代码块中使用时可能会导致意外行为;它们实际上构成了无效的标签。您应该改用rem
日期
、时间
和文件名
,因为否则它们总是在解析整个循环时扩展到当前的值setlocal EnableDelayedExpansion
rem//循环以对当前目录中的文件执行任务
对于(*.mp4)中的/R%%f,请执行以下操作(
rem//从文件中提取数据并将其保留在已创建的输出文件夹中
启动“/w”Sample.exe”--剪辑“%%f”--详细2--outDir输出
rem//这将进入已创建的输出文件夹,并对数据进行填充
开始“/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”
rem//这应该用时间戳重命名文件夹
将“输出”重命名为“输出”-!日期:~4,2!-!日期:~7,2!-!日期:~10,4!-时间:~0,2!!时间:~3,2!”
电话:SUB
echo您可以安全地使用此名称!文件名!创建新文件
)
端部
退出/B
:SUB
rem//这就是我的研究结果,它在时间戳中增加了一个数字,但不起作用
设置/a N=0
设置“文件名=输出-%date:~4,2%-%date:~7,2%-%date:~10,4%\u时间:~0,2%%时间:~3,2%。%N%
:循环
设置/a N+=1
设置“文件名=输出-%date:~4,2%-%date:~7,2%-%date:~10,4%\u时间:~0,2%%时间:~3,2%。%N%
如果存在“%FILENAME%”转到:循环
退出/B
没有检查脚本的逻辑,我修复了我在中提到的以下问题:
goto:Label
中断了括号内代码块的上下文,您的for
循环构成了这样一个块;因此,在:Label
处继续执行,但执行方式不再是块中。您可以通过将包含goto
和:Label
的代码部分放置在子例程中,并通过call
命令调用它来解决这个问题;这会将当前块上下文隐藏在goto
中::
注释在循环或其他括号内的代码块中使用时可能会导致意外行为;它们实际上构成了无效的标签。您应该改用rem
日期
、时间
和文件名
,因为否则它们总是在解析整个循环时扩展到当前的值setlocal EnableDelayedExpansion
rem//循环以对当前目录中的文件执行任务
对于(*.mp4)中的/R%%f,请执行以下操作(
rem//从文件中提取数据并将其保留在已创建的输出文件夹中
启动“/w”Sample.exe”--剪辑“%%f”--详细2--outDir输出
rem//这将进入已创建的输出文件夹,并对数据进行填充
开始“/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”
rem//这应该用时间戳重命名文件夹
将“输出”重命名为“输出”-!日期:~4,2!-!日期:~7,2!-!日期:~10,4!-时间:~0,2!!时间:~3,2!”
电话:SUB
echo您可以安全地使用此名称!文件名!创建新文件
)
端部
退出/B
:SUB
rem//这就是我的研究结果,它在时间戳中增加了一个数字,但不起作用
设置/a N=0
设置“文件名=输出-%date:~4,2%-%date:~7,2%-%date:~10,4%\u时间:~0,2%%时间:~3,2%。%N%
:循环
设置/a N+=1
设置“文件名=输出-%date:~4,2%-%date:~7,2%-%date:~10,4%\u时间:~0,2%%时间:~3,2%。%N%
如果存在“%FILENAME%”转到:循环
退出/B
1。不要在循环中使用goto
,因为它会中断循环上下文;您可以将包含goto
的代码和标签放入调用
子例程中。2.避免评论(实际上是反对的)
::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
)