2017-02-07 10 views
0

私は!Template - Year End Report.docというファイルを持っています。Windowsで「コピー」とさまざまな長さの文字列を使用するワイルドカード?

私は、次のコマンドを使用しようとしている:

copy !Template* customer_name* 

結果はcustomer_nameear End Report.docです。

私はこのように、短い名前を使用する場合:

copy !Template* cust1* 

その後、私はこの出力を得る:cust1late - Year End Report.doc

どのように私はそれが長さに関係なく、顧客名を持つ「テンプレートを!」置き換えることができます?

+0

を(%%a%%bの代わりに、%a%bを使用し、バッチファイルで使用します) [コピー](https://ss64.com/nt/copy.html)を読んでください。宛先名にワイルドカードを使用することはできません。 – DavidPostill

+0

明らかにできます。 'copy!template * customer'を実行すると、新しいファイルの名前は' customer'となります。しかし、目的地でワイルドカードを使用すると、私が質問したように、全く異なる結果になります。 –

+0

正確に。宛先名にワイルドカードがある場合の動作は未定義です。 copyの構文は 'copy source1 + source2 .. destination [options]'です。ソースはワイルドカードで置き換えられますが、宛先は置き換えられません。 – DavidPostill

答えて

1

ちょうどcopyとすることはできません。ファイル名を分割するforを使用します。

for /f "tokens=1* delims=-" %a in ('dir /b !Template*') do @echo copy "%a-%b" "cust -%b" 

私は何をしようとするのは考えてきませんが、してください

+0

それはあまりにも悪いです。私はこれまでDOSでコピーを使ってこれをやっていたことを誓っています。バッチファイルの作成は範囲外です。 Excelを使用して、すべての顧客の既存の列に基づいてすべてのコピー文字列を生成したいと考えていました。 –

+0

まあ、あなたの質問は "バッチファイル"とタグ付けされています... - とにかく:それは単なる1行です。コマンドラインで使用するか、バッチファイルに入れてください。大きな問題はありません。 ( 'echo'を実行して' copy'コマンドを無効にしてください) – Stephan

+0

私は何らかの形で各顧客名を繰り返し処理しなければなりません。ループを追加してソースを読むことになります。 –

関連する問題