我需要一些批处理 - noob-treatment。
我正在尝试重命名文件夹中的所有文件并且我正慢慢地到达那里,但是虽然我在谷歌的帮助下迈出了一步,但我想知道我在做什么。
以下是我的代码:
@ECHO OFF
setlocal enabledelayedexpansion
set a="dir /b"
FOR /F "delims=" %%i IN (' %a% ') DO (
set str=%%i
set str=!str:~1!
echo !str!
)
我放在for循环中的任何其他内容都会带来奇怪的结果。我知道enabledelayedexpansion
和!
以某种方式连接并使其工作,但for循环的内部如何与批处理中的普通命令不同,因此需要特殊的语法?
如果我输入这样的代码会出现什么问题:
@ECHO OFF
set a="dir /b"
FOR /F "delims=" %%i IN (' %a% ') DO (
set i=%i:~1%
echo %%i
)
答案 0 :(得分:1)
set i=%i:~1%
错误,因为for
循环控制变量(例如%i
)与巨大的差异>环境变量(例如%i%
或%str%
)以及对它们的适当操纵:
%~i
,%~1
等特殊页面)Command line arguments and FOR
parameters %variable:~num_chars_to_skip,num_chars_to_keep%
等)Extract part of a variable (substring) %variable:StrToFind=NewStr%
等)Variable Edit/Replace 更多资源(必读,不完整):