Batch file 批处理文件,为旧安装程序创建应答文件

Batch file 批处理文件,为旧安装程序创建应答文件,batch-file,cmd,Batch File,Cmd,我在脚本中使用“移动”时遇到问题。。。 我正在为一个旧的安装程序制作一个应答文件,但我无法让移动实际工作,它一直说路径找不到,有什么想法吗?我已经为此奋斗了一段时间,我想我已经到了需要别人来看看的地步 @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 ex

我在脚本中使用“移动”时遇到问题。。。 我正在为一个旧的安装程序制作一个应答文件,但我无法让移动实际工作,它一直说路径找不到,有什么想法吗?我已经为此奋斗了一段时间,我想我已经到了需要别人来看看的地步

@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

我想我能帮上忙

我曾经遇到过一个与您所经历的类似的问题—似乎您需要重新安排如何处理第一个变量

我看到您首先收集.exe的完整位置+文件名,然后删除引号,但我认为这就是问题所在。请先尝试您的“for%%i”

当我测试你的脚本时,我在它的结尾处得到了相同的错误(我删除了你的%exeLoc%-r,因为没有必要找到你的错误)。问题是,出于某种原因,它给了我重复的路径。我将我的位置埋在大约5个文件夹深的文件夹中,并在带有空格和数字的文件夹中尝试重新创建最脏的结构(C:\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

我想我能帮上忙

我曾经遇到过一个与您所经历的类似的问题—似乎您需要重新安排如何处理第一个变量

我看到您首先收集.exe的完整位置+文件名,然后删除引号,但我认为这就是问题所在。请先尝试您的“for%%i”

当我测试你的脚本时,我在它的结尾处得到了相同的错误(我删除了你的%exeLoc%-r,因为没有必要找到你的错误)。问题是,出于某种原因,它给了我重复的路径。我将我的位置埋在大约5个文件夹深的文件夹中,并在带有空格和数字的文件夹中尝试重新创建最脏的结构(C:\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

您是否检查了
%exePath%
的内容,以确认它是存在于指定驱动器上的文件夹,并且是目录而不是文件?
C:\Windows\setup.iss是否存在?是否打算将“%fromDir%”移动到
y%moveDir%
而不是移动到
%fileName%
?添加引号有帮助吗?@Tim Good catch,我本来也是这么做的,但被转移了:)您是否检查了
%exePath%
的内容以确认它是指定驱动器上存在的文件夹,并且它是目录,而不是文件?
C:\Windows\setup.iss
是否存在?您是否打算让
移动/y“%fromDir%”%moveDir%
而不是移动到
%fileName%
?添加引号是否有帮助?@Tim很好,我走的是同一条路,但走到了另一边:)