Prova questa
If WScript.Arguments.Count <> 3 then
WScript.Echo "usage: Find_And_replace.vbs filename word_to_find replace_with "
WScript.Quit
end If
FindAndReplace WScript.Arguments.Item(0), WScript.Arguments.Item(1), WScript.Arguments.Item(2)
WScript.Echo "Operation Complete"
function FindAndReplace(strFilename, strFind, strReplace)
Set inputFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(strFilename, 1)
strInputFile = inputFile.ReadAll
inputFile.Close
Set inputFile = Nothing
Set outputFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(strFilename,2,true)
outputFile.Write Replace(strInputFile, strFind, strReplace)
outputFile.Close
Set outputFile = Nothing
end function
Salva questo in un file chiamato Find_And_Replace.vbs, può quindi essere utilizzato dalla riga di comando come questo.
[C:\]> Find_And_Replace.vbs "C:\1.txt" "temporary" "permanent"
* Questo metodo è case sensitive "Questo"! = "Questo"
Se non si desidera leggere l'intero file in memoria, è possibile utilizzare un file temporaneo come questo.
If WScript.Arguments.Count <> 3 then
WScript.Echo "usage: Find_And_replace.vbs filename word_to_find replace_with "
WScript.Quit
end If
FindAndReplace WScript.Arguments.Item(0), WScript.Arguments.Item(1), WScript.Arguments.Item(2)
WScript.Echo "Operation Complete"
function FindAndReplace(strFile, strFind, strReplace)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objInputFile = objFSO.OpenTextFile(strFile,1)
strTempDir = objFSO.GetSpecialFolder(2)
Set objTempFile = objFSO.OpenTextFile(strTempDir & "\temp.txt",2,true)
do until objInputFile.AtEndOfStream
objTempFile.WriteLine(Replace(objInputFile.ReadLine, strFind, strReplace))
loop
objInputFile.Close
Set objInputFile = Nothing
objTempFile.Close
Set objTempFile = Nothing
objFSO.DeleteFile strFile, true
objFSO.MoveFile strTempDir & "\temp.txt", strFile
Set objFSO = Nothing
end function
E 'consuetudine per ringraziare l'utente che fornisce la risposta corretta , contrassegnando la loro risposta come risposta accettata. – Tester101
Ho testato lo script utilizzando un file con estensione .config contenente il testo di esempio fornito nel commento e non ho avuto problemi. Non sono sicuro di come stai usando lo script, ma nel caso di "" quando scrivi il comando dalla riga di comando non includi il "" digita semplicemente Find_And_Replace.vbs "C: \ 1.txt" "temporaneo" "permanente". NOT Find_And_Replace.vbs "C: \ 1.txt" "" temporary "" "permanente". – Tester101
Puoi anche provare a cambiare la prima riga nella funzione FindAndReplace "Imposta inputFile = CreateObject (" Scripting.FileSystemObject "). OpenTextFile (strFilename, 1)" Con questo "Imposta inputFile = CreateObject (" Scripting.FileSystemObject "). OpenTextFile (strFilename, 1, true, 0) ". Se questo non funziona prova a cambiare questa riga "outputFile.Write Replace (strInputFile, strFind, strReplace)" Con questo "outputFile.Write Replace (strInputFile, strFind, strReplace, 1, -1,1)" – Tester101