0

私は持っている

D:\
folder\1.jpg、
D:\folder\2.jpg、D:\folder\3.jpg
....のように

私は欲しい

D:\フォルダ\1\1.jpg、
D:\フォルダ\2\1.jpg、
D:\フォルダ\3\1.jpg
....

このコード

 FOR /R %I IN (*.jpg) DO (md %~nI; move %I %~dI%~pI%~nI\1.jpg)

のようなフォルダを作成しますD:\folder\1\1.jpg\

私は何を間違っていますか?

4

2 に答える 2

0

これを使って

FOR %I IN (*.jpg) DO (
  MD %~nI & copy %I %~nI\1.jpg & del %I)

&連続コマンドのパイプに使用します。また、move名前を変更できないため、使用するだけですcopy

于 2013-02-25T07:15:17.300 に答える
0

あなたのコマンドは、パラメーター区切り文字であるため、デイジーチェーン コマンドには使用できないD:\folder\1\1.jpg\ため、次のようなフォルダーを作成します。;後者の場合は、 を使用する必要があります&

コマンドには他にもいくつかの問題があります。

  • 現在の作業ディレクトリに移動先フォルダを作成し ( md %I)、フル パスを使用してファイルを移動します ( %~dI%~pI%~nI\1.jpg)。これは、現在の作業ディレクトリに .jpg ファイルを含むサブフォルダーがあるとすぐに失敗します。
  • 変数を引用符で囲まないため、パスまたはファイル名にスペースが含まれている場合にもコマンドは失敗します。
  • ファイルをサブフォルダーに移動すると、再帰的なフォルダー トラバーサル ( for /r) で無限ループが作成されます。

2 つの別々のループを実行することをお勧めします。1 つは宛先フォルダーを作成するため、もう 1 つはファイルを移動するためです。

for /r %I in (*.jpg) do @mkdir "%~dpnI"
for /r %I in (*.jpg) do @move "%~fI" "%~dpnI\1%~xI"
于 2013-02-25T12:39:54.317 に答える