【问题标题】:Batch script help, script exiting after parentheses批处理脚本帮助,括号后脚本退出
【发布时间】:2015-09-26 18:45:02
【问题描述】:

我编写了一个非常简单的脚本来将主机的 MAC 地址输出到一个文本文件中。

脚本在第 3 行之后退出 - 'IF DEFINED WRITEOK ('.

@echo off

cls

copy /Y NUL "%CD%\.writable" > NUL 2>&1 && set WRITEOK=1
IF DEFINED WRITEOK (
 rem ---- we have write access ----
 set DIR=%CD%\interfaces
 set FILE=%DIR%\%USERNAME%.txt
 IF NOT EXIST "%DIR%" (
  MKDIR "%DIR%"
  echo DIR '%DIR%' was created
 ) else (
  echo DIR '%DIR%' already exists
 ) for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| findstr /i "Physical Host"') do (
  echo %%i >> "%FILE%"
  echo OUTPUT written to '%FILE%'
 )

) else (
 rem ---- we don't ----
 echo DIR '%DIR%' is not writable
)

echo.
echo DONE!
pause

【问题讨论】:

  • 1.) 删除@echo off 看看发生了什么? 2.) 请准确描述实际发生的事情以及您期望发生的事情; 3.) for /f 命令不能直接跟随);要么在其间添加&,要么将for /f 放入下一行;
  • ..) & for /f.. 工作,现在我有另一个问题。 %CD%, %USERNAME% 可以并且确实包含空格。我不知道如何处理。

标签: windows batch-file scripting


【解决方案1】:

尝试在右括号后加一行:

...) 
for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| findstr /i "Physical Host"') do (...

你不能用前面的右括号来开始一个 FOR:

这行不通:

(echo 1
) for /l %%a in (1,1,10) do echo %%a

这将起作用:

(echo 1
) 
for /l %%a in (1,1,10) do echo %%a

编辑 1:

对于包含空格的路径变量,请使用双引号:

"%cd%"

使用时。

【讨论】:

  • ..) & for /f.. 工作,现在我有另一个问题。 %CD%、%USERNAME%、%DIR% 可以并且确实包含空格。我不知道如何处理。
猜你喜欢
  • 2014-12-03
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多