• ベストアンサー

batでファイルをコピーして名前を変更

Aフォルダに 修正指示26-23.xls というファイルがあります。 このファイルをドラック&ドロップでbatファイルに投げ込み Aフォルダ内にコピーし、そのコピーした方のファイル名を abc〇〇〇.xlsというファイル名に変更したいです。 〇〇〇の部分はINPUTBOXのようなものが表示されて 自分で入力をできるようにしたいです。 INPUTBOXのようなものが表示されなくても、〇〇〇の部分だけ自分で入力すれば前部分のabcは固定でつけばokです。 batで無理であればVBSでもいいです。 なにかいい方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8467/18126)
回答No.1

こんな感じ? ------------------ @echo off set /p ustr="入力>: " copy %1 abc%ustr%.xls ------------------

yyrd0421
質問者

お礼

こんなにシンプルなコードなのですね。 驚きです。 目的のことが果たせました。 ありがとうございました。

その他の回答 (1)

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.2

「VBScript」による回答です。 質問の内容では、同じフォルダ内にコピーファイルを作成する、ということでよろしいでしょうか? Option Explicit Dim f, i, n, so, wa Set so = CreateObject("Scripting.FileSystemObject") Set wa = WScript.Arguments n = InputBox("ファイル名を入力してください") f = so.GetParentFolderName(wa(0)) For i = 0 to wa.Count - 1 If LCase(so.GetExtensionName(wa(i))) = "xls" Then so.CopyFile wa(0), f & "\abc" & n & ".xls", True End If Next Set wa = Nothing Set so = Nothing 簡単な説明です。 Option Explicit 「厳密に」というような意味ですが、気にしないでください。 Set so = CreateObject("Scripting.FileSystemObject") ファイルやフォルダを扱えるようにしています。 Set wa = WScript.Arguments ドラッグ&ドロップされるのを待っています。 n = InputBox("ファイル名を入力してください") 「〇〇〇」の部分を入力。 f = so.GetParentFolderName(wa(0)) ドラッグ&ドロップされたファイルが存在するフォルダを調べています。 For i = 0 to wa.Count - 1 ドラッグ&ドロップされたファイルを1つずつ処理。 If LCase(so.GetExtensionName(wa(i))) = "xls" Then もし、拡張子が「xls」なら、 so.CopyFile wa(0), f & "\abc" & n & ".xls", True 同じフォルダ内に「abc〇〇〇.xls」という名前でコピーしています。 End If Next を、ドラッグ&ドロップされたファイルの数だけ処理しています。 Set wa = Nothing Set so = Nothing あとは、終了処理です。

yyrd0421
質問者

お礼

まさに求めていたことができました。 ありがとうございます。