我想根据创建日期(或至少上次修改)在目录中订购文件。
我有这段代码:
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循环以获取文件名,然后对它们运行命令。
答案 0 :(得分:0)
FOR /F "delims=" %%F IN ('dir /o-d /tc /b /s "directory\*.filetype"') DO echo "command" "%%F" >> "another\directory\%%~nF.tsv"
for/f
处理"文件"的文字。
"delims="
关闭令牌,以便输出"输出"来自dir
已分配。
/tc
使用创建日期(o/[-]d
省略= NTFS驱动器的字母顺序,FAT上的storge-order)
/s
添加子目录
>>
附加到输出文件。
OR
...DO "command" "%%F"
直接执行命令而不创建文件。
答案 1 :(得分:0)
由于对其他答案的评论中提到的限制,这是一个利用PowerShell的潜在解决方法:
@For /F "Delims=" %%A In (
'Powershell "(GCI "directory" -R *.filetype|Sort CreationTime -Des)|%%{$_.Fullname}"'
) Do @"command" "%%A">"another\directory\%%~nA.tsv"
显然根据需要调整directory
,filetype
,"command"
和another\directory