Windows 批处理-用于目录文件上的循环,在创建日期/时间排序
我想根据创建日期(或至少上次修改日期)在目录中对文件进行排序 我有以下代码:Windows 批处理-用于目录文件上的循环,在创建日期/时间排序,windows,batch-file,Windows,Batch File,我想根据创建日期(或至少上次修改日期)在目录中对文件进行排序 我有以下代码: FOR /R "directory" %%F IN (*.filetype) DO echo "command" "%%F" > "another\directory\%%~nF.tsv" …它在没有特定顺序(字母顺序?)的文件上运行for循环 我希望能够做到的是: FOR /R "direcotry\*.filetype" %%F IN ('dir /o-d /b "directory"') DO echo
FOR /R "directory" %%F IN (*.filetype) DO echo "command" "%%F" > "another\directory\%%~nF.tsv"
…它在没有特定顺序(字母顺序?)的文件上运行for循环
我希望能够做到的是:
FOR /R "direcotry\*.filetype" %%F IN ('dir /o-d /b "directory"') DO echo "command" "%%F" > "another\directory\%%~nF.tsv"
下面的代码不起作用,但是你可以明白我的意思。
我精通BASH
,但不精通BATCH
关键是dir/o-d/b“drive:\directory\*.filetype”
,它按创建日期排序(相反顺序),然后只吐出文件名——但我不知道如何将其放入for循环中,获取文件名,然后对其运行命令
FOR /F "delims=" %%F IN ('dir /o-d /tc /b /s "directory\*.filetype"') DO echo "command" "%%F" >> "another\directory\%%~nF.tsv"
for/f
处理文本的“文件”
“delims=“
关闭标记化,以便分配来自目录的整行“输出”
/tc
使用创建日期(o/[-]d
省略=NTFS驱动器的字母顺序,FAT上的存储顺序)
/s
添加子分区
>
附加到输出文件
或
要直接执行命令而不创建文件。由于另一个答案的注释中提到的限制,这里有一个利用PowerShell的潜在解决方法:
@For/F“Delims=“%%A In(
“Powershell”(GCI“目录”-R*.filetype | Sort CreationTime-Des)|%{$\u0.Fullname}”
)执行@“命令”%%A“>“另一个\目录\%%~nA.tsv”
显然,根据需要调整目录
,文件类型
,“命令”
和另一个\目录
,正确答案,但是目录/S/O-D
中存在一个限制,其中开关/S
和/O
同时使用:排序应用于每个(子)目录中!
...DO "command" "%%F"