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"