私は与えられたテンプレートを使用してファイル名を表示する必要があります。私は、次のコードを書いている:バットでのファイルの操作
if "%2" == "" (
echo "Missing second argument!"
set /p FileName="Input file name template ('*', '?' are allowed): "
set /p FileType="Input file type ('text', 'bat', 'all' only): "
if FileType == "all" (set FileType = "*")
) else (
set FileType="%2"
)
echo %DirSearch%\%FileName%.%FileType%
for %%i in (%DirSearch%\%FileName%.%FileType%) do (echo "Thats it: %%i")
2番目の引数が空の場合は「すべて」への等しいが、私はそれが「*」としての価値だ書き換える場合、私は、ファイル名テンプレート、拡張子(約ユーザーに尋ねる
。今、最初のトラブルは、それが書き換えられていないということです私は「すべてが」「のFileType」が「*」にそれを設定した後「すべて」のままで置くとき、なぜ
そしてエコーが現れます:。。?
"C:\Folder"\test.all
"Thats it: "C:\Folder"\test.all"
それを単一の値として宣言し、for
で使用しますか?
新コード:
if "%2" == "" (
...
if "%FileType%" == "all" (set FileType=*)
) else (
...
)
set result=%DirSearch%\%FileName%.%FileType%
echo %result%
for %%i in (%result%) do (echo "Thats it: %%i")
// echo %result%:
"C:\Data\test"\test.all
// in for cycle
"Thats it: "C:\Data\test"\test.all"
右の文字列は次のようになります。 "C:\ DATA \テスト\のtest.all"
'FileType'を書き換えても、それがまだ 'すべて'の場合は後で書き換えません。 – Ockonal
@Ockonal: '= 'のまわりに空白を入れてはいけないとわかったので、それに応じて答えを編集しました。また、*設定*するときに値を引用符で囲む必要はありません。 – Jon
大丈夫です、それは今それを置き換えます。しかし、 'for'サイクルのための正しい文字列を生成する方法はありますか? – Ockonal