【问题标题】:batch - Read file path from file and use it as file path in next for loop批处理 - 从文件中读取文件路径并将其用作下一个 for 循环中的文件路径
【发布时间】:2014-12-09 17:09:29
【问题描述】:

如何从 .t​​xt 文件中读取一行并将其用作下一个 for 循环中的路径。 .txt 文件如下所示:

C:\Users\User\Desktop\kaust 1
C:\Users\User\Desktop\kaust 2


for /F %%A in (C:\Users\User\Desktop\asd.txt) do (
  for /R "%%A" %%f in (*) do (
   copy "%%f" "C:\Users\User\Desktop\New folder\1\"
  )
)

脚本的想法是使用文件路径作为文件夹并从中获取文件及其子文件夹并将这些文件复制到另一个文件夹中,因此所有文件都在同一个位置,没有子文件夹。

错误提示:

C:\Users\User>(for /R "%A" %f in (*) do (copy "%f" "C:\Users\User\Desktop\New folder\1\" ) ) 

所以它不需要 %%A 作为变量。

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    当用作 FOR 参数时,您在解析 FOR 和扩展 %%A 变量时遇到了非常棘手的行为。

    您最好尝试一种解决方法,通过使用PUSHD %%a 更改当前目录,并在当前目录上调用FOR

    for /F %%A in (asd.txt) do (
      pushd %%A
      for /R %%f in (*) do (
        echo %%f
      )
      popd
    )
    

    【讨论】:

    • 非常好!问题是 for /r 将该参数视为文字 - "%%A" 被解释为 %A 因为 % 转义 % - 并且 OP 的代码非常适用于名为 %A 的目录,只是不作为(逻辑上) 预期。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多