- ベストアンサー
batでファイルをコピーして名前を変更
Aフォルダに 修正指示26-23.xls というファイルがあります。 このファイルをドラック&ドロップでbatファイルに投げ込み Aフォルダ内にコピーし、そのコピーした方のファイル名を abc〇〇〇.xlsというファイル名に変更したいです。 〇〇〇の部分はINPUTBOXのようなものが表示されて 自分で入力をできるようにしたいです。 INPUTBOXのようなものが表示されなくても、〇〇〇の部分だけ自分で入力すれば前部分のabcは固定でつけばokです。 batで無理であればVBSでもいいです。 なにかいい方法があれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じ? ------------------ @echo off set /p ustr="入力>: " copy %1 abc%ustr%.xls ------------------
その他の回答 (1)
- Prome_Lin
- ベストアンサー率42% (201/470)
「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 あとは、終了処理です。
お礼
まさに求めていたことができました。 ありがとうございます。
お礼
こんなにシンプルなコードなのですね。 驚きです。 目的のことが果たせました。 ありがとうございました。