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”。

当我在测试你的脚本时,我在它的末尾遇到了同样的错误(我 REM 删除了你的 %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 回答