【发布时间】:2010-10-21 12:45:58
【问题描述】:
正在尝试制作一个 .bat 脚本,并且需要让一些字符串正常工作。
这就是我目前所拥有的
@echo off
for /r %%i in (*.csv) do (
set str=%%i
set str=%str:csv=rar%
echo %%i
echo.%str%
)
假设我在 C:\ 中运行了这个,得到了 5 个 csv、1.csv、2.csv... 5.csv
第一次运行时,我得到以下输出:
C:\1.csv
C:\2.csv
C:\3.csv
C:\4.csv
C:\5.csv
我第二次得到:
C:\1.csv
csv=rar
C:\2.csv
csv=rar
C:\3.csv
csv=rar
C:\4.csv
csv=rar
C:\5.csv
然后我得到的所有后续电话:
C:\1.csv
rar=rar
C:\2.csv
rar=rar
C:\3.csv
rar=rar
C:\4.csv
rar=rar
C:\5.csv
当我期望得到的是直接通过时:
C:\1.csv
C:\1.rar
C:\2.csv
C:\2.rar
C:\3.csv
C:\3.rar
C:\4.csv
C:\4.rar
C:\5.csv
C:\5.rar
所以我删除了替换:
@echo off
for /r %%i in (*.csv) do (
echo %%i
set str=%%i
echo.%str%
)
第一次运行:
C:\1.csv
C:\2.csv
C:\3.csv
C:\4.csv
C:\5.csv
第二次运行:
C:\1.csv
C:\5.csv
C:\2.csv
C:\5.csv
C:\3.csv
C:\5.csv
C:\4.csv
C:\5.csv
C:\5.csv
C:\5.csv
这就像它直到循环的最后一次运行才设置 str 变量,即使它试图回显变量,该变量的行出现在设置之后,然后将其保存到下一个循环?我在处理循环的方式上有什么遗漏吗?
谢谢
【问题讨论】:
标签: batch-file cmd