У меня есть код ниже, который читает список файлов и заменяет обратную и прямую косую черту в файле.
Требования: мне нужно заменить символы на -
(дефис), если содержимое файла другоечем - .0-9A-Za-z
(дефис, пробел, точка, от 0 до 9, от a до z и от A до Z) * 1005 *
Примечание: если в файле bat есть синтаксическая ошибка, тогда мой файл данных становится пустым. Это никогда не должно произойти.
Пожалуйста, помогите.
@echo off
Mode 85,35 & color 0A
Title Replace Multi String using Regex with vbscript into Folder with text files
Set "Source_Folder=\\server\Import\LoadError\dump"
Set "Backup_Folder=\\server\APImport\LoadError\dump\Backup_dump\"
Rem :: Just make a backup of folder and its contents if something went wrong!
If Not Exist "%Backup_Folder%" XCopy "%Source_Folder%" "%Backup_Folder%" /D /Y /E /F >%~dp0BackupLogFile.txt
Set "VBSFILE=%tmp%\%~n0.vbs" & Call :CreateVBS
Set "TmpFile=%Temp%\%~n0.tmp"
for /R "%Source_Folder%" %%f in (*JEG_OAP*.*) do (
echo( ------------------------------------------
echo Replacing Contents of "%%f"
echo( ------------------------------------------
Call :Search_Replace "%%f" "%TmpFile%"
Move /Y "%TmpFile%" "%%f">nul
)
Timeout /T 2 /NoBreak>nul & Exit
::-----------------------------------------------------------------------------
:CreateVBS
(
echo WScript.StdOut.WriteLine Search_Replace(Data^)
echo Function Search_Replace(Data^)
echo Dim strPattern, strReplace, strResult,oRegExp
echo Data = "%~1"
echo Data = WScript.StdIn.ReadAll
echo strPattern = "[\\\/\/`%''*+.:;<>=!_&~{}[]^?$#@"]"
echo strReplace = "-"
echo Set oRegExp = New RegExp
echo oRegExp.Global = True
echo oRegExp.IgnoreCase = True
echo oRegExp.Pattern = strPattern
echo strResult = oRegExp.Replace(Data,strReplace^)
echo Search_Replace = strResult
echo End Function
)>"%VBSFILE%"
Exit /b
::----------------------------------------------------------------------------
:Search_Replace <InputFile> <OutPutFile>
Cscript //nologo "%VBSFILE%" < "%~1" > "%~2"
Exit /B
::----------------------------------------------------------------------------