以下是我正在使用的代码,但没有得到结果但没有得到理想的结果但错误
set "OldStra=abc eft"
set NewStra=!NewStr1!
set "outputa=
for %%a in (%NewStr1a::=;%) do set outputa=!outputa!%%a-
rem Eliminate the last dash:
set outputa=%outputa:~0,-1%
echo Outputa: "%outputa%"
pause;
for %%F in (C:\Users\rawal\Desktop\movie\"!NewStr1!"\*.*) do (
CALL ModFile %%~dpnxF OldStra NewStra
)
我收到此错误
c:\Users\rawal\Desktop\movie>(CALL ModFile %~dpnxF OldStra NewStra )
The following usage of the path operator in batch-parameter
substitution is invalid: %~dpnxF OldStra NewStra
For valid formats type CALL /? or FOR /?
答案 0 :(得分:1)
我很确定您发布的代码不应该(不能)提供您的错误。您发布的代码是完整的代码吗?或者你已经消除了你认为无关紧要的线条?
如果在FOR循环之外执行以下行,则会生成错误:
CALL ModFile %%~dpnxF OldStra NewStra
我的猜测是你的实际代码还有一行包含)
,它正在关闭你的FOR循环。
无论原因是什么,都会导致您的CALL行超出FOR循环的上下文。
答案 1 :(得分:0)
set "OldStra=abc eft"
set "NewStra=!NewStr1!"
set "outputa="
for %%a in (%NewStr1::=;%) do set "outputa=!outputa!%%a"
echo Outputa: "%outputa%"
pause;
for %%F in ("C:\Users\rawal\Desktop\movie\!NewStr1!\*") do (
CALL ModFile %%~dpnxF "%OldStra%" "%NewStra%"
)
如果ModFile
是内部程序,请在:
后添加CALL
冒号
注意:如果这不起作用,则必须显示整个批代码。