0

コマンドプロンプトを開いてディレクトリを正常に変更するバッチファイルを取得しましたが、ディレクトリが変更された後、バッチにコマンドとして文字列を入力させたいのですが、うまくいきません。

試してみましcmd /k stringたが、うまくいかなかったようです.cmdは変更されたディレクトリに座っているだけです. 私も試しました:

    set Opvar= echo string
    %Opvar%

ここでも、最後に変更されたディレクトリに配置されます。コメント アウトされている batchisp 行は、現在のディレクトリ プロンプトで文字列全体を入力して Enter キーを押したかのように動作させたい文字列です。ここにすべてがあります:

@Echo OFF

FOR /F "Tokens=*" %%@ IN ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" ^| FIND "-1000"') DO (
FOR /F "Tokens=2,*" %%A IN ('Reg Query "%%@" /v "ProfileImagePath" ^| FIND /V "%%@"') DO (
set drive=%%B
    Echo    Admin SID: %%~n@
    Echo Admin Folder: %%B
)
)

:Ask

echo What are you flashing? Please select one option(1,2, or 3):
echo 1. Main Board w/ 6-Station OpCon.
echo 2. Main Board w/ 12-Station Opcon.
echo 3. OpCon Board.


set /P INPUT=Type input: %=%
If "%INPUT%"=="1" goto Option1
If "%INPUT%"=="2" goto Option2
If "%INPUT%"=="3" goto Option3

::::::::::::

:Option1

echo Starting 6-Station DFU flash...
echo xcopy "%~dp0M1k_MainPCB\6-STATION\*.*" "%drive%\Desktop\MainPCB6\" /d /s /h /v /c /f /k /y
echo cmd /k "cd /d %drive%\Desktop\MainPCB6\6-STATION\Debug\"

goto End

::::::::::::

:Option2

echo Starting 12-Station DFU flash...
echo xcopy "%~dp0M1k_MainPCB\12-STATION\*.*" "%drive%\Desktop\MainPCB12\" /d /s /h /v /c /f /k /y
echo cmd /k "cd /d %drive%\Desktop\MainPCB12\12-STATION\Debug\"

goto End

::::::::::::

:Option3

echo Starting OpCon DFU flash...
xcopy "%~dp0M1k_SWPCB\SWPCB\*.*" "%drive%\Desktop\SWPCB\" /d /s /h /v /c /f /k /y
cmd /k "cd /d %drive%\Desktop\SWPCB\SWPCB\Debug\"

::batchisp -device at32uc3a0512 -hardware usb -operation erase f memory flash blankcheck loadbuffer SWPCB.elf program verify start reset 0


goto End
::::::::::::

:End

echo ******
echo *****
echo ****
echo ***
echo **
echo *
echo Flash Completed!  Press any key to exit...

Pause>NUL&Exit

どんな助けでも大歓迎です。

ありがとうございました

4

1 に答える 1

2

CMD の新しいインスタンス (CMD /K) で作業ディレクトリを変更します。PUSHD を使用して現在の CMD インスタンスの作業ディレクトリを変更し、POPD を使用して最後に使用したディレクトリに戻ります。

@Echo OFF
PUSHD %WINDIR%"
Echo I'm on "%CD%" Directory!
POPD
Echo I'm on "%CD%" Directory!
Pause&Exit

コードを次のように変更します。

:Option3

echo Starting OpCon DFU flash...
xcopy "%~dp0M1k_SWPCB\SWPCB\*.*" "%drive%\Desktop\SWPCB\" /d /s /h /v /c /f /k /y
PUSHD "%drive%\Desktop\SWPCB\SWPCB\Debug"
batchisp -device at32uc3a0512 -hardware usb -operation erase f memory flash blankcheck loadbuffer SWPCB.elf program verify start reset 0
POPD
goto :End

...または、CMD の新しいインスタンスでコマンドを直接開始する場合は、次のように変更します。

CMD /k "Start /W """" "%drive%\Desktop\SWPCB\SWPCB\Debug\batchisp" -device at32uc3a0512 -hardware usb -operation erase f memory flash blankcheck loadbuffer SWPCB.elf program verify start reset 0"

PS: アプリを起動するために作業ディレクトリを変更する必要はないことに注意してください。最後の例のように、パスの後にプロセス名を記述できます。

于 2013-04-25T20:30:47.040 に答える