【问题标题】:how to move folders with a loop over folders (in batch)?如何通过文件夹循环移动文件夹(批量)?
【发布时间】:2015-07-21 19:54:41
【问题描述】:

情况:

我尝试在 shell 中的循环内移动文件,但我的代码不起作用。

for /D %%F in (*) do (
   if "%%F" NEQ "%directoryToPutFilesIn%" (
     move /y "%%F" "%directoryToPutFilesIn%"
  )
)

经过几个小时的测试,我意识到这是因为 %%F 指向文件夹,因此无法移动文件。

不好的解决方案:

我使它工作并确认我的怀疑的方法是将 %%F 的值保存在另一个变量中,并在下一轮使用该变量来移动文件。请注意,以下内容需要在第一轮初始化%precedentFile%

for /D %%F in (*) do (
move /y "%precedentFile%" "%directoryToPutFilesIn%"
   if "%%F" NEQ "%directoryToPutFilesIn%" (
     move /y "%%F" "%directoryToPutFilesIn%"
     set precedentFile=%%F
  )

问题:

这个方案不实用,感觉有问题。有没有办法调整我当前的代码来做到这一点,或者只是另一种方式?

【问题讨论】:

  • 您是要移动文件夹,还是 .txt 文件等?
  • 我有 2 个循环,我展示的是文件夹。我还有一个几乎相同的文件。两者都不起作用。
  • 试试下面的代码来移动文件和文件夹,希望对你有帮助:) :)

标签: windows batch-file command-line


【解决方案1】:

尝试下面的代码在批处理脚本中将文件从一个文件夹移动到另一个文件夹:

for /f %%a in ('dir /a:-D /b') do move /Y "%%~fa" "%directoryToPutFilesIn%"

解释:

dir /a:-D /b : This command will list all files in the directory 
move /Y "%%~fa" "%directoryToPutFilesIn%" : This will move all files in the directory where this command is executed to the destination you have mentioned.
%%~fa : This command will get full qualified path of the file with it's name.

尝试下面的代码移动目录: 下面的命令会将执行此命令的路径中的目录移动到提供的目的地。在这将是 H:\ Drive,相应地更改它

for /D %%b in (*) do move /Y "%%~fb" "H:\"

【讨论】:

  • 我收到以下错误:批量参数替换中路径运算符的以下用法无效:%~fa"
  • 实际上我在变量之前添加了一个 % 并且它可以工作。我无法编辑它。我会把它标记为答案。你知道为什么需要 2% 吗?
  • 如果您直接在命令行中执行上述命令,它工作正常,但如果您希望在批处理脚本中使用它们,您需要使用额外的“%”来使用变量值。这是设计使然..
  • 更改了我的答案,如果您觉得这有帮助,请接受,以便其他人使用。
  • 接受了。非常感谢关于双百分比的规范,现在我明白了!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多