2016-08-22 3 views
0

ファイル名が "12739-5468768.xml"のファイルが多数ありますが、これらのファイルの中には "12739"があります。これらのファイルの中には、すべて&を "AND" </は何も付いていません。私は多くのコマンドとpythonコマンドを試しましたが、それは私のコンピュータで動作していないようです。文字列をバッチファイルコマンドに置き換える

@echo off 
setlocal 
setlocal enabledelayedexpansion 
set "search=&" 
set "replace= AND " 
set "textfile=12739*" 
set "newfile=Output.txt" 
(
    for /f "delims=" %%i in (%textfile%) do ( 
    set "line=%%i" 
    set "line=!line:%search%=%replace%!" 
    echo(!line! 
) 
) > "%newfile%" 
del %textfile% 
rename %newfile% %textfile% 
endlocal 
+0

でバットを行い、それが失敗したところ、それだけでも、私に教えて、バッチのフォルダに含まれ、何も表示されません。 – jasmine825

+1

FOR:/ Fはワイルドカードを受け付けないので、 'ファイル12739 *は見つかりませんでした 'というエラーが表示されます – jeb

答えて

0

ダウンロード「おなら」 と呼ばれるものは、このコード

"@echo off 
FART -i -r "12739*" "&" " AND " " 
0

&のアンパサンドを^文字でエスケープする必要があります。

@echo off 
setlocal 
setlocal enabledelayedexpansion 
set "search=^&" 
set "replace= AND " 
set "textfile=12739*" 
set "newfile=Output.txt" 
(
    for /f "delims=" %%i in (%textfile%) do ( 
    set "line=%%i" 
    set "line=!line:%search%=%replace%!" 
    echo(!line! 
) 
) > "%newfile%" 
del %textfile% 
rename %newfile% %textfile% 
endlocal 
+1

いいアイデアですが、間違っています。検索式は常に引用符で囲まれているので、エスケープしないでください。 – jeb

+0

文字列の中でそれを試して、^でエスケープしています。 – GoodJuJu

+1

このように、動作しません。 Btwあなたのコードは 'for/f" delims = "%file%"のエラーで、ファイル "12739 *"で停止します。 – jeb

1

単一のファイルのためのソリューション
これは、また、ファイルの内容に;で始まる空行と行を!^扱います。

@echo off 
setlocal 

call :replaceFile "12739-5468768.xml" 
exit /b 

:replaceFile 
set "search=&" 
set "replace= AND " 
set "textfile=%~1" 
set "newfile=%~1.replaced" 
setlocal DisableDelayedExpansion 
(
    for /f "usebackq delims=" %%i in (`findstr /N "^" "%textfile%"`) do ( 
    set "line=%%i" 
    setlocal EnableDelayedExpansion 
    set "line=!line:*:=!" 
    if defined line (
     set "line=!line:%search%=%replace%!" 
     set "line=!line:</=!" 
    ) 
    (echo(!line!) 
    endlocal 
) 
) > "%newfile%" 
endlocal 
exit /b 
+0

これは複数のファイルで動作しますが、私はできるようになりたい12739 * – jasmine825

+0

これはうまくいきませんでした。 – jasmine825

+0

googleで見つかった[for-loopを使ってディレクトリ内のすべてのファイルを繰り返します](http:// stackoverflow .com/q/138497/463115) – jeb

関連する問題