【问题标题】:How to get filenames by traversing a folder in a batch file如何通过遍历批处理文件中的文件夹来获取文件名
【发布时间】:2014-01-10 09:13:38
【问题描述】:
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 无法获取文件名,为什么?

【问题讨论】:

  • 使用dir,这就是你在dos中获取文件名的方式。
  • 我想将脚本中的文件名作为 var。
  • 好吧,我的朋友,你应该学会写更好的标题。现在编辑您的问题标题,并明确说明您想要什么。
  • 纯 dos 是 MSDOS,它不支持超过 8.3 个字符的文件夹名或文件名。您的示例表明您正在使用 Windows CMD。

标签: batch-file for-loop cmd


【解决方案1】:
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 /?

【讨论】:

  • Y:\>("Y:\ACS\data\rtr\CHS_cp0ex\dataFiles\Reported\deasn9.exe" -a "Y:\ACS\data\rtr\CHS_cp0ex\dataFiles\Reported \cme20MSS13a_itu" -b "Y:\ACS\data\rtr\CHS_cp0ex\dataFiles\Reported\TTFILE.201401101630282600" 1>"Y:\ACS\data\rtr\CHS_cp0ex\dataFiles\tmp\TTFILE.txt" ) 系统无法执行指定的程序。 Y:\>("Y:\ACS\data\rtr\CHS_cp0ex\dataFiles\Reported\deasn9.exe" -a "Y:\ACS\data\rtr\CHS_cp0ex\dataFiles\Reported\cme20MSS13a_itu" -b "Y: \ACS\data\rtr\CHS_cp0ex\dataFiles\Reported\TTFILE.201401101630422601" 1>"Y:\ACS\data\rtr\CHS_cp0ex\dataFiles\tmp\TTFILE.txt")
  • 为什么所有文件名都是 TTFILE.txt
  • 我也使用 %%~nxs 和下面的一样
  • @user3143869: The system cannot execute ... 可执行文件的路径是从您的代码转换而来的。如果不存在,请根据需要进行调整。
  • @user3143869: all filenames are TTFILE.txt :嗯,从您的输出来看,所有文件都命名为TTFILE,唯一的区别在于扩展名,所以,在"%dataFiles%\tmp\%%~ns.txt" 中将%%~ns.txt 更改为@987654334 @
【解决方案2】:

Dir 是您正在寻找的。你听起来像个 Unix 用户。

【讨论】:

  • 我想将脚本中的文件名作为 var。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多