如何将文件夹名称设置为变量以便在同一个批处理文件中使用它?

如何将文件夹名称设置为变量以便在同一个批处理文件中使用它?

我想创建一个批处理文件,这个批处理文件必须放在名为“Draft”的文件夹中,然后对每个子文件夹搜索 .txt 文件“list.txt”,当找到这个 .txt 文件时,将执行从“Draft”文件夹到“Ready”文件夹的复制。我写了一个小脚本,但遇到了一些问题。

@echo off
:loop

  for /d %%i in ('dir "C:\Users\ntosis\Desktop\Draft" /ad /o:d /s /b') do ( 
  SET a=%%i
  echo %a%
  )

echo Folder is empty or does not exist
timeout /t 15
goto loop

脚本这一小部分的问题是,变量“a”无法保存文件夹的名称,如果我将其更改为,echo %a%echo Hello World脚本只会打印一次消息,而不会在循环运行期间一直打印。有什么想法吗?

答案1

你也许可以一行代码就能完成这个:

for /R "C:\Users\ntosis\Desktop\Draft" %G in (list.txt) do ( type "%G" >> "C:\Users\ntosis\Desktop\Ready\list.txt"

这会将所有 list.txt 文件连接到 Ready 文件夹中的单个 list.txt。

确保您的 Ready 文件夹不是 Draft 文件夹的子文件夹,否则您将得到重复的行。

如果您想从批处理文件运行,请不要忘记将 % 加倍:

for /R "C:\Users\ntosis\Desktop\Draft" %%G in (list.txt) do ( type "%%G" >> "C:\Users\ntosis\Desktop\Ready\list.txt"

如果您想使用 list.txt 文件复制整个源目录结构,那么情况会有所不同。

相关内容