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 is OFF」というメッセージが表示され、出力は「You typed」になります。理由はわかりません。

この部分だけを実行すると:

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

別のバッチ ファイルでは期待どおりに動作し、commandLine.txt ファイルには入力した内容が入力されます。

.bat ファイルは、cmd ラインから実行すると機能するように見えますが、デスクトップで .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 に答える