我在我的 windows 批处理脚本中做错了什么,我试图理解脚本背后的逻辑
What am I doing wrong in my windows batch script, I'm trying to understand the logic behind script
这是一个有效的 bat 脚本,它从文件夹中以字母 P 开头的每个 jpg 文件中删除字母 P。
@echo off
for %%a in (p*.*) do ren "p*" "/*"
我想了解这个脚本背后的逻辑,所以我就把它弄乱了。
如果我想删除文件末尾的字母 P,我更改了它但没有用,
我到底做错了什么?
我只需要在 %%a 中和 ren 命令之后将 P 从头移动到尾。
@echo off
for %%a in (*.*P) do ren "*P" "/*"
您提到您特别想重命名以 p
开头的文件并具有 .jpg
扩展名。这意味着您要将开头 p
移动到名称的末尾,在扩展名之前。这个例子就是这样做的:
@echo off
setlocal enabledelayedexpansiob
Pushd "D:\location of files here"
for %%i in (p*.jpg) do (
set "name=%%~ni"
ren "!name:~1!!name:~0,1!%%~xi"
)
Popd
简短说明。我们为 p*.jpg
做,以确保我们只遍历以 p 开头并具有 jpg
扩展名的文件。
我们将变量 %name%
设置为文件 %%~ni
的名称(也被视为 !name!
因为我们启用了 delayedexpansion
)
然后我们使用变量扩展来去除部分名称。这里我们说打印变量 !name!
中的所有内容,不包括第一个字符 !name:~1!
然后只使用第一个字符作为从字符零开始,只选择一个。 !name:~0,1!
并简单地把扩展名还给它 %%~xi
要阅读更多关于我们在这里使用的所有内容的帮助,请打开 cmd
并输入以下内容:
for /?
set /?
setlocal /?
我们在这个答案中提到的所有内容,都可以在上面的帮助中找到。
这是一个有效的 bat 脚本,它从文件夹中以字母 P 开头的每个 jpg 文件中删除字母 P。
@echo off
for %%a in (p*.*) do ren "p*" "/*"
我想了解这个脚本背后的逻辑,所以我就把它弄乱了。
如果我想删除文件末尾的字母 P,我更改了它但没有用,
我到底做错了什么?
我只需要在 %%a 中和 ren 命令之后将 P 从头移动到尾。
@echo off
for %%a in (*.*P) do ren "*P" "/*"
您提到您特别想重命名以 p
开头的文件并具有 .jpg
扩展名。这意味着您要将开头 p
移动到名称的末尾,在扩展名之前。这个例子就是这样做的:
@echo off
setlocal enabledelayedexpansiob
Pushd "D:\location of files here"
for %%i in (p*.jpg) do (
set "name=%%~ni"
ren "!name:~1!!name:~0,1!%%~xi"
)
Popd
简短说明。我们为 p*.jpg
做,以确保我们只遍历以 p 开头并具有 jpg
扩展名的文件。
我们将变量 %name%
设置为文件 %%~ni
的名称(也被视为 !name!
因为我们启用了 delayedexpansion
)
然后我们使用变量扩展来去除部分名称。这里我们说打印变量 !name!
中的所有内容,不包括第一个字符 !name:~1!
然后只使用第一个字符作为从字符零开始,只选择一个。 !name:~0,1!
并简单地把扩展名还给它 %%~xi
要阅读更多关于我们在这里使用的所有内容的帮助,请打开 cmd
并输入以下内容:
for /?
set /?
setlocal /?
我们在这个答案中提到的所有内容,都可以在上面的帮助中找到。