3

新しい電話を手に入れたばかりで、古いファイルを一時的に PC C:\OldPhone\ にコピーしました。

私の PC では、すべての写真が D:\Photos の下のさまざまなフォルダーにあります。

D:\Photos\ の下のどこにもない C:\OldPhone\ の下のすべての .jpg ファイルを一覧表示するコードが必要です

それは理にかなっていますか?強調しておくと、フォルダー構造は同一ではなく、ファイルがそこにある限り、ファイルがどこにあるかは気にしません。ファイル名の比較は手始めに行いますが、サイズを追加するオプションはおまけです!

CMD、VBS、または powershell が適していますが、Visual Studio が対応できるものであれば何でも構いません。

4

5 に答える 5

3

これを試して:

for /r "D:\Photos" %%a in (*.jpg) do set "$%%~na=1"
for %%a in (C:\OldPhone\*.jpg) do if not defined $%%~na echo %%~a not in d:\photos

cmd にはawkのような連想配列があります。これは、 を含むファイル名では機能しません。=

于 2013-07-28T20:31:06.990 に答える
0

Endoroの答えに基づいて、私が最終的に得たものは次のとおりです。フォルダーの場所を変数に入れる必要がありますが、今は機能しているので、必要なのはそれだけです! setlocal ... endlocal 行もサブルーチンに入れる必要があります。今見てみると、OLDFOLDERも馬鹿げた名前だ。これは悪いコーディングです!

不足している .jpg または .mp4 ファイルをフォルダーにコピーして、コピーを容易にします。

echo off
set OLDFOLDER=C:\OldPhone
cls
echo Checking for files in %OLDFOLDER% which aren't in D:\Pictures
del /f /q "D:\Documents\MissingFiles\*"
setlocal
for /r "D:\Photos" %%a in (*.jpg) do set "$%%~nxa=1"
for /r "%OLDFOLDER%" %%a in (*.jpg) do if not defined $%%~nxa copy "%%~a" "D:\Documents\MissingFiles\"
endlocal
setlocal
for /r "D:\Photos" %%a in (*.mp4) do set "$%%~nxa=1"
for /r "%OLDFOLDER%" %%a in (*.mp4) do if not defined $%%~nxa copy "%%~a" "D:\Documents\MissingFiles\"
endlocal
if exist "D:\Documents\MissingFiles\*.*p*" (
  echo Files missing from D:\Photos copied to D:\Documents\MissingFiles\
) else (
  echo There are no files in %OLDFOLDER% which aren't in D:\Photos
)
pause
于 2013-08-08T05:43:55.850 に答える