0

这是我正在使用的代码:

@ECHO OFF
IF "%1" == "start" (
    SET /p %CmdLineArgs% =< commandLine.txt
    START C:\edm\NewGenFH60.exe %CmdLineArgs%
 ) ELSE (
    SET /p CmdLineArgs=Command Line Arguments:
    ECHO you typed %CmdLineArgs%
    ECHO %CmdLineArgs% > commandLine.txt
 )
PAUSE

当我运行此代码时,commandLine.txt 文件填充了“ECHO 已关闭”,输出为“您键入了”,我不知道为什么。

当我只运行这部分时:

SET /p CmdLineArgs=Command Line Arguments:
ECHO you typed %CmdLineArgs%
ECHO %CmdLineArgs% > commandLine.txt

在一个单独的批处理文件中,它按预期工作,commandLine.txt 文件将填充我输入的任何内容。

当我从 cmd 行运行 .bat 文件时,它似乎可以工作,但当我单击桌面上的 .bat 文件时却不行。有人知道为什么吗?

4

2 回答 2

1

您需要使用 DelayedExpansion

@ECHO OFF
setlocal enabledelayedexpansion
  IF "%1" == "start" (
  SET /p %CmdLineArgs% =< commandLine.txt
  START C:\edm\NewGenFH60.exe %CmdLineArgs%
) ELSE (
  SET /p a=Command Line Arguments: 
  ECHO you typed !a!
  ECHO !a! > commandLine.txt
)
PAUSE
于 2013-05-08T18:20:16.373 回答
0

尝试这个:

@ECHO OFF &setlocal enabledelayedexpansion
IF "%1"=="start" (
SET /p CmdLineArgs=< commandLine.txt
START C:\edm\NewGenFH60.exe !CmdLineArgs!
) ELSE (
SET /p CmdLineArgs=Command Line Arguments:
ECHO you typed !CmdLineArgs!
ECHO !CmdLineArgs! > commandLine.txt
)
PAUSE
于 2013-05-08T18:08:31.357 回答