2017-08-02 158 views
0

我已經寫了一個批處理文件,用於清理我的項目工作中的某個測試的恢復文件。腳本解釋如下:如果我從新的命令提示符運行,批處理文件無法正常工作

  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'語句,所以你增加的細節沒有多大幫助。 –

回答

2

=放在<之前。

set /p dllName=<dllName.txt 
+0

非常感謝!它有助於解決這個問題。 – user3505805

相關問題