2016-05-17 4 views
2

バッチファイルの変数%CD%に問題があります。スクリプトがドライブのルートから実行される場合は、バックスラッシュが追加されます。 updatedir =%CDの%の\更新 & エコー%updatedir%フォルダEからバッチファイル変数%CD%ドライブルートから実行するとバックスラッシュが追加される

  • のようなものが返されます:新しいフォルダ\ \更新を
  • から、一例として

    ドライブルートE:\\更新

ありがとうございますルートから実行すると余分なバックスラッシュを取り除くためにyを使用しますか?

+1

は... – aschipfl

+0

@aschipfl私は知りませんでしたが、私はそれを確認しました。知っておきたい... –

答えて

1

あなたはこのような何かを行うことができます:あなたは、システム変数%CD%を変更行きたくないので

set "CurrentDir=%CD%" 
if "%CD:~-1%"=="\" set "CurrentDir=%CD:~0,-1%" 

が、これは%CD%の現在の値に新しい変数%CurrentDir%を設定します。次に、%CD%の最後の文字が\であるかどうかを調べ、一致する場合は、%CD%の値から最後の文字を引いたものに%CurrentDir%を設定します。

This question/answerには、バッチファイルで部分文字列を使用する方法についての詳細があります。

3

あり%CD%の場合、現在のディレクトリがルートの場合は末尾に\しかありません。そこに残っているバックスラッシュを取り除くことができます。しかし、より簡単な解決策があります。

文書番号%__CD__%を代わりに使用してください。は常にの後ろにバックスラッシュが追加されています。これにより、現在のディレクトリに関係なく、クリーンなパスを簡単に構築できます。

set "updatedir=%__CD__%Update 
+0

聖なる牛!あなたはどうやってそれを知っていますか?これが_公式文書にない場合は、少なくともどこかで文書化されていますか? –

+1

@WesLarson - 私は最初にjessのDosTips投稿で '%__ CD __%'を見たと思いますが、その話題が何であったか覚えていません。 http://ss64.com/nt/syntax-variables.htmlにはいくつかの非公式な文書があります。 http://stackoverflow.com/q/20156490/1012053に興味があるかもしれません。 – dbenham

2

\\\のすべての発生を置き換えます。化粧品にひどい、余分なバックスラッシュは害はありませんが

echo %updatedir:\\=\% 
関連する問題