我正在尝试在批处理文件中使用FOR / R命令来查找具有特定扩展名(XMP)的所有文件。然后我想将扩展名重命名为'*'以传递给ROBOCOPY。对于我的初步测试,因为我知道*需要处理,我正在使用ABC。
问题是我似乎无法获得分配给变量进行处理的%% G中的值。
我的代码
setlocal enabledelayedexpansion
For /R C:\Users\Paul\Pictures %%G IN (*.XMP) do (
set data="%%G"
set search=XMP
set replace=ABC
set "data=!data:%search%=%replace%!"
echo %data%
)
endlocal
在一次迭代中生成以下内容
set data="C:\Users\Paul\Pictures\XXXX Family\YYYY\Shower\20160220_165255.xmp"
echo
set search=XMP
set replace=ABC
set "data=!data:=!"
echo
)
如何将%GG中的值分配给“数据”?
由于
答案 0 :(得分:0)
使用for
修饰符。
查看for /?
以获取有关修饰符的帮助以及有关使用for
的所有内容。
一个例子:
@echo off
setlocal enabledelayedexpansion
For /R C:\Users\Paul\Pictures %%G IN (*.XMP) do (
set "data=%%~dpnG"
echo "!data!"
echo "!data!.ABC"
echo "!data!.*"
)
dpn
是驱动器,路径和名称。
答案 1 :(得分:0)
现有批处理文件的简单修复也是在FOR
命令之前移动查找和替换变量。
@echo off
setlocal enabledelayedexpansion
set "search=XMP"
set "replace=ABC"
For /R C:\Users\Paul\Pictures %%G IN (*.XMP) do (
set "data=%%~G"
set "data=!data:%search%=%replace%!"
echo !data!
)
但正如我在上面的评论中所指出的以及Michael向您展示的内容,如果您只是想要替换扩展,那么请使用命令修饰符,如FOR
命令的帮助文件中所述。
@echo off
setlocal enabledelayedexpansion
For /R C:\Users\Paul\Pictures %%G IN (*.XMP) do (
echo %%~dpnG.abc
)