2015-10-23 110 views
0

我正在嘗試使用VBS構建批處理文件,該文件將替換文件中的某些字符串。它的工作,但問題是我想使站變量指示在目錄上,因爲該文件存在於某些文件夾中。使用VBS替換文件中的字符串並批處理

這裏是我做過什麼:

的VBS代碼:

Const ForReading = 1  
Const ForWriting = 2 

strFileName = Wscript.Arguments(0) 
strOldText = Wscript.Arguments(1) 
strNewText = Wscript.Arguments(2) 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile(strFileName, ForReading) 
strText = objFile.ReadAll 
objFile.Close 

strNewText = Replace(strText, strOldText, strNewText) 
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting) 
objFile.Write strNewText 'WriteLine adds extra CR/LF 
objFile.Close 

,這裏是運行批處理代碼:

:input 
@echo off 
CLS 
ECHO ############################################# 
ECHO #           # 
ECHO # 1 - AM         # 
ECHO # 2 - PM         # 
Echo # 3 - Exit         # 
ECHO #           # 
ECHO ############################################# 


SET O="" 
SET STATION ="" 
SET /P STATION=Set Your STATION number: 
SET PATH ="C:\Envfile\%STATION%\Envfile.env" 
SET /P O=Set Your Choice And Press Enter: 
ECHO Loading ......... 
IF %O%==1 GOTO AM 
IF %O%==2 GOTO PM 
IF %O%==3 GOTO Exit 
IF %O%=="" GOTO input 
goto done 

:AM 

    cscript replace.vbs %PATH% "PM" "AM" 
goto done 

:PM 

    cscript replace.vbs %PATH% "AM" "PM" 
goto done 


ELSE 
GOTO input 

,你可以看到在用戶通過「站數字var「,並且我希望它在位於以站號命名的文件夾中的Envfile.env文件上結束(例如:1123)。

由於某些原因,它不工作。

有幫助嗎?

+1

刪除SET語句中變量名和等號之間的空格。我也不會使用PATH作爲變量名。使用tpath或其他東西。 – Squashman

回答

0

解決了這個問題,顯然vbscript編譯器的路徑從計算機的環境路徑中被刪除了。

+2

這取決於您是否使用:SET PATH =「C:\ Envfile \%STATION%\ Envfile.env」或「SET PATH =」C:\ Envfile \%STATION%\ Envfile.env「'設置PATH變量。如果你重寫了SYSTEM PATH變量,那麼是的,這是你的問題,沒有找到cscript。但是你也必須認識到**%path%**與**%path%**不一樣。 – Squashman

+0

您應該提供解決方案的詳細信息;請記住,SO是幫助人們找到編程問題的解決方案;如果有人遇到同樣的問題,並且談到這個話題,他會很失望,你不覺得嗎? – aschipfl

相關問題