首页 > 解决方案 > 循环的批处理文件,目标不更新

问题描述

我正在尝试创建一个循环来传输文件并重命名目标路径,这就是我目前所拥有的:

@echo off
setlocal enabledelayedexpansion
for %%x in (
list of files
) do (
set DST=%%%X:20180101=!.!%
@echo Copying...
@echo  From: %%X
@echo    To: %DST%
REM COPY %%X !DST! /V /Y
)

问题是目的地没有改变它仍然是循环中的第一个路径和文件,我怎样才能确保它的正确性?

上述循环中的意图是将路径的路径替换为 . 这有效,但路径不会随源而改变。

标签: batch-file

解决方案


我假设这样的事情?

@echo off
setlocal enabledelayedexpansion
for %%i in (*.txt) do (
  set dst=%%~fi
  set dst=!dst:20180101=.!
  echo !dst!
  @echo Copying...
  @echo  From: %%~fi
  @echo    To: !DST!
  REM COPY %%~fi !DST! /V /Y
)

注意我们如何使用延迟扩展!而不是%

有关延迟扩展的更多信息,请参阅set /?setlocal /?


推荐阅读