2016-05-09 22 views
1

これはコマンドラインで練習を開始した非常に単純なバッチファイルですが、何らかの理由で正常に動作しません。ここでは、コード:何らかの理由で複数ファイルのバッチファイルの変更がありません

::Change names 

@echo off 
set /p DirLoc = "Enter file location:" 
cd %DirLoc% 
echo %DirLoc% 
dir 
set /p SetFrom = "What file type is it?" 
set /P SetTo = "What file type do you want?" 
echo Change from %SetFrom% 
echo to %SetTo% 
rename *.%SetFrom% *.%SetTo% 
echo process has been completed 
pause 

echo on 

、私は私の場合であるフォルダの場所を、挿入したときに「C:\ユーザーは、マルコ・DS \デスクトップ\テスト\」、プログラムは、C」まで移動します。 \ユーザー\マルコDS \デスクトップ "、これはいいです。私はエントリのいくつかの選択肢を試しましたが、私は決して目的のディレクトリを取得することはできません。

ありがとうございます。

+0

'set' ['/ P']コマンドラインで' = 'の前後のスペースを削除します。それ以外の場合は変数名の一部になります... – aschipfl

+0

両方のスペースを削除する必要がありますか?ありがとう! – user3604362

+0

'set/P'では、左スペースを削除しなければなりません。右スペースは問題ありません。しかし、 'set'('/P'を指定しない)では、あなたは両方をほとんど取り除きます。一貫性のために、私は 'set/P'のためにも両方を削除することをお勧めします... – aschipfl

答えて

1

バッチでは、変数を設定するときにスペースや引用符を使用しないでください。そうしないと、変数の一部になります。多くの言語とは異なり、バッチはすべての空白文字をコードの一部として読み込みます。この場合、変数名は%DirLoc%ではなく%DirLoc %に設定されます。必要な方法でコードを動作させるには、コード内の不要なスペースと引用符をすべて削除する必要があります。例えば

set /p DirLoc = "Enter file location:"echo %DirLoc%echo %DirLoc %権利を書いてコードを実行してみてください、これの証拠を確認するにはset /p DirLoc=Enter file location:

になります。

関連する問題