
お世話になります。
会社でファイル名に商品コードを使っており、10桁のものと13桁のもの(ともに半角英数字)が混在しています。
あるフォルダから、ファイル名が13桁のもののみ別のフォルダに移動したいのですが、手動でやるには数が多すぎ、フリーソフトは使用禁止のため、コマンドプロンプトでできたら…と思っております。
しかし、?では0文字も含んでしまうため、どのように指定したらよいかわからず困っております。
商品コード以外で名前をつけているものもあるため、10桁のものを一旦移動する、ということもできません。
ファイル名の文字数を指定する方法があれば、教えていただければ幸いです。
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
自分なら・・・
名前順にソートしてテキストに出力してそれを編集して必要なファイルだけ残し、
dir /b /on > s-file.txt
テキストファイルからforコマンドの/fオプションを使ってファイル名を拾って、パスを設定してmoveコマンドで移動させるかも。
テキストをパス付きで編集しておいても良いかもしれないが、面倒なのでやらない。
rem この下2つの環境変数には実際に使うパスを指定すること。
set Path1=C:\
set Path2=D:\
for /f "delims=" %%a in (s-file.txt) do (
set fromPath=%Path1%\%%a
set toPath=%Path2%\%%a
move %fromPath% %toPath%
)
これを10文字と13文字のファイルでそれぞれ行う。
ああ、これ未検証だからエラーが出るかもしれない。
ありがとうございます、一旦テキストに出力するというやり方、目から鱗でした!
結局、出力したテキストからfindstrで13文字を拾ってmove、という方法でできました。
丁寧なご回答に感謝です!
No.5
- 回答日時:
#3 のWscript を書いた者ですが、ひとつ、書き忘れていたことがあります。
>商品コードを使っており、10桁のものと13桁のもの(ともに半角英数字)
私の書いたものは、あくまでも、拡張子を除いたもの
If Len(BaseName) = 10
[abcdefghij].[txt] としたら、最初の[abcdefghij]までの10文字です。
一応、念の為にしるしておきます。
再びのご回答ありがとうございます。Wscriptについて、詳しく教えていただき感謝です!分かりやすくて便利そうですね。Wscriptについても、また勉強してみたいと思います!
No.3
- 回答日時:
こんにちは。
Wscript って、ご存知でしょうか。
Windows の中に入っている VBライクなプログラムで、バッチよりも簡単で表現力が豊かなプログラミング言語です。
テキストエディタで、以下のコードを貼り付けて、名前は何でもよいのですが、拡張子を、VBS としてあげます。
MyPath と Destin に、必要なフォルダを書いてください。
それを、ファイルを移動する元のフォルダに入れてあげます。
例えば、 flen_move.vbs
#2さんの findstr は、そういえば、そういうのはありましたね。今、思い出しました。
以下は、全角空白だけはいれないでください。
'---------切り取り線----------
Dim FName, MyPath, Destin, MyName
Dim objFS, objFolder, objFolderItems, objItem, objShell
Dim i, cnt
MyName = WScript.ScriptName
MyName = Left(MyName, Len(MyName)-4)
MyPath = "D:\Test1\"
Destin = "D:\Test2\"
Set objFS = CreateObject("Scripting.FilesystemObject")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(MyPath)
Set objFolderItems = objFolder.Items()
For i = 0 To objFolderItems.Count - 1
Set objItem = objFolderItems.Item(i)
FName =objItem.Name
BaseName = objFS.GetBaseName(FName)
If Len(BaseName) = 10 And BaseName <> MyName Then '桁数10
objFS.Movefile FName, Destin
cnt = cnt + 1
End If
Next
MsgBox CLng(cnt) & "個のファイル移動終了"
Set objFolderItems = Nothing
Set objFolder = Nothing
Set objShell =Nothing
Set objFS= Nothing
'--------------------
ありがとうございます!
Wscript、初めて知りました。今回はfindstrを使ってバッチを作りましたが、これはとても便利そうですね。わざわざテンプレートまで書いてくださり、ご丁寧に本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
環境変数の設定について...
-
コマンドプロンプトのコピー関...
-
ファイル移動
-
【VBA】ExcelマクロでCSVファイ...
-
VBA★PDFをPDFアプリで印刷し...
-
VBS パスに変数を入れたい
-
Excel 相対パス
-
リストボックスにファイル名の...
-
batファイルについてです
-
dos窓での実行
-
VBAでパワーシェルを実行したい...
-
xcopyコマンドの進行状況を表示...
-
エクセルのファイルオープン時...
-
VBAとResgen.exeを使用して、re...
-
VBAで今日の日付のフォルダを作...
-
ブラウザからファイルパスを取...
-
Like演算子で、[と]を文字とし...
-
フォルダ ショートカット
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
Excel 相対パス
-
【VB.NET】App.configにファイ...
-
【VBA】ExcelマクロでCSVファイ...
-
エクセルのマクロで特定フォル...
-
実行ファイルのパスを取得したい
-
コマンドプロンプトのコピー関...
-
VBA★PDFをPDFアプリで印刷し...
-
VBAでパワーシェルを実行したい...
-
ExcelVBAの使い方 ¥の使い方...
-
C#でのProcess.Startと変数path
-
ExcelのVBAで上書き保存を確...
-
開いているファイルを削除し、...
-
アプリケーションのインストー...
-
【VBA】複数のtxtファイルから...
-
EXCEL(VBA)で指定フォルダ内の...
-
fopenでのパス指定
-
パスワード保護されたExcelファ...
おすすめ情報
お礼を途中で投稿してしまったのでこちらで失礼します。
結局、テキストにファイル一覧を出力してfindstrで13文字のものを拾ってmove、という方法でできました。findstrでの正規表現という方法、よく知らなかったのでとても助かりました!