2017-07-10 7 views
-2

Windowsバッチスクリプトを使用して、指定されたパス上のすべてのファイルで2つのスペースでタブを置換する必要があります。バッチファイルにタブ文字を正しく入力するのは簡単ではないことがわかります。誰も助けることができます。ありがとう2つのスペースでタブを置き換えるWindowsバッチスクリプト

+1

変数置換はどのように機能しますか? **%変数:[tab] = [space] [space]% '** – Compo

+0

タブ文字を入力するのが簡単ではないのはなぜですか?これまでTabキーで試したことはありますか?どのような奇妙なテキストエディタはタブをサポートしていないのですか?とにかく、[ツアー]を読んでここで尋ねなさい!あなたはStackOverflowを無料のコーディングサービスと混同しているようです... – aschipfl

答えて

1

EDIT先頭のスペースの出力が訂正されました。

トリッキーな部分は、tabチャーをつかむことです。仕事をしているように思われる場合

@echo off 
setlocal EnableDelayedExpansion 

rem Grab TAB character 
rem http://www.dostips.com/forum/viewtopic.php?f=3&t=7898 
set "TAB=" 
rem First, try the method for Windows XP 
for /F "skip=4 delims=pR tokens=2" %%a in ('reg query hkcu\environment /v temp') do set "TAB=%%a" 
rem Then, the method for newer versions 
rem http://www.dostips.com/forum/viewtopic.php?f=3&t=1733&p=6840#p6853 
for /F "tokens=2 delims=0" %%a in ('shutdown /? ^| findstr /BC:E') do if not defined TAB set "TAB=%%a" 

rem set desired number of spaces 
set "SPACES= " 

pushd "your_desired_path" 

for /f "delims=" %%f in ('dir /B *.txt') do ( 
    > "output_%%~nxf" (
    for /f "tokens=* delims=" %%i in (%%~nxf) do (
     set "myData=%%i" 
     set "myData=!myData:%TAB%=%SPACES%!" 
     echo !myData! 
    ) 
) 
    echo copy /y "output_%%~nxf" "%%~nxf" 
    echo del "output_%%~nxf" >NUL 2>NUL 
)  

popd 

endlocal 
exit/B 

は、上記copydelラインからechoを削除...かもしれません。

+0

私は 'set" TAB =%TAB:=% "' for/F'ループを 'shutdown /'やその背後に挿入します。 – JosefZ

関連する問題