2017-11-01 8 views
0

こんにちは私は画像付きのフォルダを持っていて、「007:C:\ test \ from \ 007」を実行した場合、 ファイルは009で始まります。ワイルドカードを使用したWindowsのバッチ移動ファイルは、奇妙な動作をします

C:>移動Cから\テスト\:* 007 \の.jpg Cから\テスト\:\テスト\は

Cを\に:\テスト\を\ 007014_1112017.JPGから

C: \ test \ from \ 009408_1112017_12.JPG

C:\ test \ from \ 009086_1112017_5.JPG

C:\ 009429_1112017_5.JPG

Cから\テスト\:\ 009437_1112017_4.JPG

Cから\テスト\ \ 009120_1112017_4.JPG

Cから\テスト\から\テスト\ \ 009408_1112017_2.JPG

 7 file(s) moved. 

どのようにですか?

+0

出力を複製できません。正確なフォルダ構造とファイル名を同じコマンドでテストすると、** 007 **ファイルだけが移動します。 – Squashman

+0

@Squashman Magooとdir/xはファイルのロングネームが "009429_1112017_5.JPG"であることを示していますが、ショート "007971〜1.JPG" – vunsb

+0

は実際のファイル名を表示していません。ショートファイル名がすべて同じであることは、すべてのコンピュータで同じにする必要があります。 Windows XP、Windows 7、Windows 2008 Server、Windows 2012サーバーでファイル名をテストしました。すべてのシステムでは、009ファイルのうちの1つが最初に007として表示されません。 7つのファイルはすべて、すべてのシステムで同じ短いファイル名として表示されます。 – Squashman

答えて

0

デフォルトでは、ファイルには「ロングネーム」と「ショートネーム」があります。

moveは、のいずれかのマスクに一致するファイルをの名前で移動します。

あなたの周りのあなたの仕事は、dirコマンドからの実際の出力と一致するようにFINDSTRを使用することですdir /x

+0

これはかなり説明しています!回避策はどうですか? – vunsb

0

であなたのファイルのための短縮名を表示することができます。 dirコマンドの出力は、短いファイル名ではなく、実際のファイル名を常に出力します。

FOR /F "delims=" %%G in ('dir /b /a-d 007*.jpg^|findstr /r /c:"^007.*\.jpg"') do move "%%G" "C:\test\to\" 
+1

個人的には、この場合はfindstr/i/b/L/c: "007" 'を好むでしょう(ケース - ** i ** nsensitive、** b ** egins ** L ** iterally ** c ** onstant文字列 - インスタンスに依存することは間違いありません – Magoo

関連する問題