1

スクリプトで "MOVE" を機能させるのに問題があります...古いインストーラー用の応答ファイルを作成していますが、移動を実際に機能させることができず、パスが見つからないというメッセージが表示され続けます、 何か案は?私はしばらくこれと戦ってきましたが、他の誰かがそれを見てくれる必要があるところまで来ていると思います.

@echo off

set /p exeLoc=Drop .EXE here: 
REM removing quotes
set exeLoc=%exeLoc:"=%
REM stripping filename from path
for %%i in (%exeLoc%) do set exeLoc=%%~dpi 
REM setting exeLoc   
set exePath=%exeLoc%

set /p fileName=Name of .ISS file to save: 
REM identifies if the filename contains the proper suffix (.iss)
if x%fileName:.iss=%==x%fileName% set fileName=%fileName%.iss
cls

echo.%exePath%
echo.%fileName%
echo.
echo.Please wait, this may take some time...

verify >nul
REM creates record of install
%exeLoc% -r
echo.

set moveDir=%exePath%\%fileName%
set fromDir=C:\Windows\setup.iss
verify >nul
move /Y %fromDir% %fileName%
echo.

IF '%ERRORLEVEL%'=='0' echo.Answer file moved to& echo.%moveDir%
IF NOT '%ERRORLEVEL%'=='0' echo.There as an issue moving& echo.%fromDir%& echo.to& echo.%moveDir%
pause
4

1 に答える 1

1

私はこれを手伝うことができると思います...

私はかつてあなたが経験しているのと同様の問題を抱えていました-最初の変数の処理方法を再調整する必要があるようです。

最初に.exeの完全な場所とファイル名を収集し、次に引用符を削除するようですが、これが問題だと思います。最初に「for%%i」を試してください。

スクリプトをテストしているときに、スクリプトの最後に同じエラーが発生しました(エラーを見つける必要がなかったため、%exeLoc%-rを削除しました)。問題は、何らかの理由でパスが重複していたことでした。私は自分の場所を約5フォルダーの深さと、スペースと番号のあるフォルダーに埋めて、可能な限り最も汚れた構造を再現しようとしました(C:\ Test Test \ first \ 2nd Folder \ 2013)。また、ディレクトリを書き込もうとした場所に変更するのも適切だと思いました。それが必須かどうかはわかりませんが、良い習慣だと思いました。

これは私があなたの最初の変数関数を次のように変更しなければならなくなったものです:

set /p exeLoc=Location of .EXE: 
set exePath=%exeLoc%
for %%i in (%exePath%) do set exePath=%%~dpi
set exePath=%exePath:"=%
cd %exePath%

完全なスクリプトはここにあります:

@echo off

set /p exeLoc=Location of .EXE: 
set exePath=%exeLoc%
for %%i in (%exePath%) do set exePath=%%~dpi
set exePath=%exePath:"=%
cd %exePath%
set /p fileName=Name of .ISS file to save: 
if x%fileName:.iss=%==x%fileName% set fileName=%fileName%.iss
cls
echo.%exePath%
echo.%fileName%
echo.
echo.Please wait, this may take some time...
verify >nul
%exeLoc% -r
echo.
set moveDir=%exePath%\%fileName%
set fromDir=C:\Windows\setup.iss
verify >nul
move /Y %fromDir% %fileName%
echo.
IF '%ERRORLEVEL%'=='0' echo.Answer file moved to& echo.%moveDir%
IF NOT '%ERRORLEVEL%'=='0' echo.There as an issue moving& echo.%fromDir%& echo.to& echo.%moveDir%
pause
于 2013-02-20T18:22:59.210 に答える