我试图使用批处理更改字符串,但收到一些错误

时间:2013-08-16 14:30:51

标签: windows for-loop batch-file cmd

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

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

2 个答案:

答案 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冒号 注意:如果这不起作用,则必须显示整个批代码。