batch-file - 循环的批处理文件,目标不更新
问题描述
我正在尝试创建一个循环来传输文件并重命名目标路径,这就是我目前所拥有的:
@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
)
问题是目的地没有改变它仍然是循环中的第一个路径和文件,我怎样才能确保它的正确性?
上述循环中的意图是将路径的路径替换为 . 这有效,但路径不会随源而改变。
解决方案
我假设这样的事情?
@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 /?
推荐阅读
- postgresql - postgres 中排除约束的要点
- sql-server - 在 SQL Server 的一个过程中使用 UNION ALL 从不同数据库中的两个不同函数获取记录
- odoo - 是否存在在odoo中不同版本之间迁移数据库的方法
- aws-lambda - 长时间运行的 lambda 等待 Airflow 中的响应超时
- json - 与 AVRO 相比,在 kafka 流中使用 JSON 序列化程序会导致性能下降吗?
- python - self 是 __init__ 和其他方法/功能的要求吗?
- c# - 如何使用 FluentAssertions 4.x 版断言异常?
- php - Wordpress:条件/页面特定菜单
- c++ - 为什么编译器不会丢弃未使用的参数?
- spring-boot - Bean 创建问题:无法注册在类路径资源中定义的 bean 'xyz'