我正在尝试在批处理文件中使用 FOR/R 命令来查找具有特定扩展名 (XMP( 的所有文件。然后我想将扩展名重命名为"*"以传递给 ROBOCOPY。对于我的初始测试,因为我知道需要处理 *,所以我正在使用 ABC。
问题是我似乎无法将 %%G 中的值分配给变量进行处理。
我的代码
setlocal enabledelayedexpansion
For /R C:UsersPaulPictures %%G IN (*.XMP) do (
set data="%%G"
set search=XMP
set replace=ABC
set "data=!data:%search%=%replace%!"
echo %data%
)
endlocal
在一次迭代中生成以下内容
set data="C:UsersPaulPicturesXXXX FamilyYYYYShower20160220_165255.xmp"
echo
set search=XMP
set replace=ABC
set "data=!data:=!"
echo
)
如何获取分配给"数据"的 %GG 中的值?
谢谢
使用for
修饰符。
查看for /?
以获取有关修饰符的帮助以及有关使用for
的所有帮助。
举个例子:
@echo off
setlocal enabledelayedexpansion
For /R C:UsersPaulPictures %%G IN (*.XMP) do (
set "data=%%~dpnG"
echo "!data!"
echo "!data!.ABC"
echo "!data!.*"
)
dpn
是驱动器、路径和名称。
现有批处理文件的简单解决方法是将查找和替换变量移到 FOR
命令之前。
@echo off
setlocal enabledelayedexpansion
set "search=XMP"
set "replace=ABC"
For /R C:UsersPaulPictures %%G IN (*.XMP) do (
set "data=%%~G"
set "data=!data:%search%=%replace%!"
echo !data!
)
但正如我在上面的评论中指出的那样,以及迈克尔向您展示的内容,如果您只想替换扩展名,请使用命令修饰符,如 FOR
命令的帮助文件中的说明。
@echo off
setlocal enabledelayedexpansion
For /R C:UsersPaulPictures %%G IN (*.XMP) do (
echo %%~dpnG.abc
)