如何通过遍历批处理文件中的文件夹来获取文件名

时间:2014-01-10 09:13:39

标签: batch-file for-loop cmd

for %%s in (Y:\ACS\data\rtr\CHS_cp0ex\dataFiles\Reported\TTFILE*.*) do (
 Y:\ACS\data\rtr\CHS_cp0ex\dataFiles\Reported\deasn9.exe -a      Y:\ACS\data\rtr\CHS_cp0ex\dataFiles\Reported\cme20MSS13a_itu -b  %%s   >Y:\ACS\data\rtr\CHS_cp0ex\dataFiles\tmp\%%s:~ns.txt
)

我试图从文件夹Y:\ACS\data\rtr\CHS_cp0ex\dataFiles\Reported\

获取文件名

但\ %% s:~ns无法获取文件名,为什么?

2 个答案:

答案 0 :(得分:0)

set "dataFiles=Y:\ACS\data\rtr\CHS_cp0ex\dataFiles"

for %%s in ("%dataFiles%\Reported\TTFILE*.*") do (
    "%dataFiles%\Reported\deasn9.exe" -a "%dataFiles%\Reported\cme20MSS13a_itu" -b "%%~fs" >"%dataFiles%\tmp\%%~ns.txt"
)

有很多路径。我用变量替换了它们,但这不是必需的。

现在,for命令变量

中对文件的引用

%%s将保留对该文件的引用。将会或不会包含文件的完整路径,相对路径或无路径,具体取决于for命令中指示文件集的方式

%%~ns文件的名称,无扩展名

%%~nxs文件名称(带扩展名)

%%~fs文件的完整路径。驱动器,文件夹,文件名和扩展名。

有关不同修饰符的完整列表,请参阅for /?

答案 1 :(得分:-2)

Dir正是您要找的。你听起来像一个unix用户。