2017-03-23 15 views
1

通常、複数のcsvファイルを組み合わせるには、バッチコマンド%〜dp0を入力して現在の作業ディレクトリを取得します。 &が内部コマンドまたは外部コマンドとして認識されなかった後にパスを示す '&'の後にバッチファイルを壊す現在の作業ディレクトリを取得中にアンパサンド(&)シンボルが発生しました。アンパサンド(&)をバッチファイルの現在の作業ディレクトリ%〜dp0からエスケープするには

は君たちのいずれかの&を特定し、(これは&を脱出し、バッチファイルを実行することができますよう)& ^に置き換えることで、私の下のスクリプトを変更して私を助けてください。あなたの提案のいずれかが評価されます。ここで

は私のコードです:

@echo off 

ECHO Set working directory 
pushd %~dp0    - How to escape & in this line??? 

ECHO Deleting existing combined file 
del combined.csv 

setlocal ENABLEDELAYEDEXPANSION 

REM set count to 1 
set cnt=1 

REM for each file that matches *.csv 

for %%i in (*.csv) do (

REM if count is 1 it's the first time running 

    if !cnt!==1 (

REM push the entire file complete with header into combined.csv - this will also create combined.csv 

for /f "delims=" %%j in ('type "%%i"') do echo %%j >> combined.csv 

REM otherwise, make sure we're not working with the combined file and 
) else if %%i NEQ combined.csv (

REM push the file without the header into combined.csv 
    for /f "skip=1 delims=" %%j in ('type "%%i"') do echo %%j >> combined.csv 
) 

REM increment count by 1 
    set /a cnt+=1 
) 

cmd \k 

答えて

1

%~dp0を囲む引用符を置くことは十分なはずです:あなたはpushdを使用する理由

... 
pushd "%~dp0" 
... 

ところで、私は理解していません。あなたのコードのどこにでもpopdがないので、pushdは役に立たないようです。 ECHO Set working directoryが正しく理解されている場合はpushdCD %~dp0に置き換えてください。

+0

マイケルの提案に感謝しています。今、私は '&' –

+0

@ NarendraPamuruから脱出することができました。これが助けになったら、その横にある灰色のチェックマークをクリックして回答を受け入れてください。 – geisterfurz007

+0

PUSHDではなくCDを使用する場合は、 '\ D'オプションを含める必要があります。 – dbenham

関連する問題