如果我从新的命令提示符运行,批处理文件无法正常工作

问题描述:

我已经写了一个批处理文件,用于清理我的项目工作中的某个测试的恢复文件。脚本解释如下:如果我从新的命令提示符运行,批处理文件无法正常工作

  1. 它会运行一个可执行文件,它将一个dll文件作为参数,然后运行一个进程。

  2. 如果在进行一些计算之前进程被终止,它会创建恢复文件。

  3. 这里我的脚本将总是在清理恢复文件后加载dll,以避免通过访问特定路径手动删除文件。

  4. 为了使通用,批处理脚本将存储的dll路径和dll名称文本文件从它将自动选择路径。

下面是批处理脚本代码:

@echo off 
::Display the information first time if variables not set. Store them for future retrieval 
set "currPath=%cd%" 
if exist dllPath.txt (
    set /p dllPath<=dllPath.txt 
) else (
    set /p dllPath="Provide game dll path (1st time only): " 
    ::save the environment variables 
    echo %dllPath% > "dllPath.txt" 
) 

if exist dllName.txt (
    set /p dllName<=dllName.txt 
) else (
    set /p dllName="Provide game dll name (1st time only): " 
    ::save the environment variables 
    echo %dllName% > "dllName.txt" 
) 


::clean the data 
cd /D %dllPath% 
@echo %dllPath% 
del *.bin 
del *.recovery 

%dllPath%\..\..\RunProcess.exe -dll %dllPath%\%dllName% 
cd /D %currPath% 

问题与脚本

  1. 从命令提示符下运行该脚本第一次,脚本是能正常将dll路径和名称正确存储在文本文件中。

  2. 如果我从同一命令提示符多次运行该脚本,该过程将成功运行。

  3. 但是如果我关闭命令提示符下运行脚本后尝试从新开的命令提示符脚本,该脚本将抛出错误为

该命令的语法不正确。

我试图谷歌关于这一点,并尝试修复它,但不能。这可能是一个愚蠢的问题,但作为批处理脚本的新手我没有任何其他选择。

+0

在第一行注释掉@echo off。它可以让你找出哪条线路故障,此时你可以尝试找出原因。在黑暗中试图猜测的盲目运行并不会奏效。 –

+0

我也是这样做的,在阅读文本文件的时候就知道了,如果是的话,它会抛出错误。 – user3505805

+0

首先,不要在评论中添加详细信息,而是在帖子中添加它们。其次,你有两个单独的'if'语句,所以你增加的细节没有多大帮助。 –

=放在<之前。

set /p dllName=<dllName.txt 
+0

非常感谢!它有助于解决这个问题。 – user3505805