我有一个程序可以获取特定文件的文件大小(不用担心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
命令的新手)
答案 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 /?