0

下面是我正在使用但没有得到结果的代码没有得到想要的结果但是错误

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 /?
4

2 回答 2

1

我很确定您发布的代码不应该(不能)给出您的错误。您发布的代码是完整的代码吗?或者你是否消除了你认为无关紧要的台词?

如果在 FOR 循环之外执行以下行,则会产生错误:

CALL ModFile %%~dpnxF OldStra NewStra

我的猜测是你的实际代码有一个额外的行,其中包含一个)过早关闭你的 FOR 循环的行。

无论是什么原因,都会导致您的 CALL 行超出 FOR 循环的上下文。

于 2013-08-16T17:11:05.593 回答
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%"
)

IfModFile是一个内部程序,在 .:之后放置一个冒号CALL
注意:如果这不起作用,您必须显示整个批处理代码。

于 2013-08-16T17:04:45.250 回答