【发布时间】:2021-02-09 00:04:44
【问题描述】:
我正在尝试从另一个目录中读取包含我想要的 .jpg 名称列表的 .txt 文件,然后将这些文件复制到当前目录。文本文件的名称不能硬编码,因为我打算为数百个文件夹使用同一个批处理文件,每个文件夹都有自己唯一的 .txt 列表。
我试过了:
FOR /F %%a in ("*.txt") do (
FOR /F "delims=" %%N in (%%a) do COPY "C:\Files\%%N.jpg" %cd%
)
第二个 For 循环在与硬编码的 .txt 单独使用时起作用。
对不起,如果这是一个新手错误,我是 cmd 行的新手。
【问题讨论】:
-
/F选项用于读取文件。你为什么使用 /D? -
糟糕,我认为这是之前的尝试。将其更改为 /F,但仍然无法正常工作。我认为它以某种方式将“.txt”作为文字,因为它返回“.txt”而不是 cmd 中的 .txt 文件的名称
-
这正是它正在做的事情。再次查看
for /?的输出。当usebackq未作为选项列出时,双引号用于处理字符串,单引号用于处理命令,没有引号用于处理文件。 -
我用它来检查第一个循环:
For %%a in (*.txt) do (echo %%a)它正确地返回了文件名。当在第二个循环中使用完全相同的文件名作为 %%a 的硬编码值时,它也可以工作。但是,当一起使用时,它似乎仍然不起作用。目前我没有使用任何带有 %%a 的引号。 -
调用每个文本文件
filelist.txt或像files.list这样更模糊的东西有什么问题?没有理由给每个文件一个完全不同的名称,因此名称未知!
标签: batch-file cmd