FOR命令变量扩展错误

时间:2015-12-14 23:15:08

标签: windows batch-file for-loop

我有一个程序可以获取特定文件的文件大小(不用担心if语句或LINE_NUMBER变量)...

setlocal EnableExtensions EnableDelayedExpansion
for %Q in (%currentRoom%) do set Nfilesize=%~zQ
if Nfilesize GTR filesize (
    set /A "LINE_NUMBER=LINE_NUMBER + 1"
)
endlocal

(P.S。%currentRoom%是一个名为bob.txt)的文件

我测试后(使用CALL命令)...

我一直收到此错误
The following usage of the path operator in batch-parameter substitution is invalid: %~zX
你能帮帮我吗? (我是FOR命令的新手)

2 个答案:

答案 0 :(得分:0)

当您编写批处理脚本时,请对end=''循环变量使用%%

for

答案 1 :(得分:0)

在批处理文件中,您必须使用%%Q%%~zQ作为在命令提示符窗口中运行时显示的命令 FOR 的帮助help for或{ {1}}解释。

您还忘记了{strong> IF 条件下环境变量名称周围的for /?

%

如果 FOR 循环和 IF 条件位于定义的块内,则需要使用setlocal EnableExtensions EnableDelayedExpansion set "filesize=16384" set "currentRoom=myroom.txt" for %%Q in (%currentRoom%) do set "Nfilesize=%~zQ" if %Nfilesize% GTR %filesize% ( set /A "LINE_NUMBER+=1" ) endlocal 而不是!来使用延迟展开使用% ... (,对于在块中修改的所有变量,如下面示例中的变量)

Nfilesize

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • setlocal EnableExtensions EnableDelayedExpansion set "filesize=16384" set "currentRoom=myroom.txt" ( for %%Q in (%currentRoom%) do set "Nfilesize=%~zQ" if !Nfilesize! GTR %filesize% ( set /A "LINE_NUMBER+=1" ) ) endlocal
  • endlocal /?
  • for /?
  • if /?
  • set /?