これが可能かどうかさえわかりませんが、試してみると思いました。
これが私の問題です。複数の大きなハードドライブ(1TB以上)ですべてのイメージを検索し、それらを1つのフォルダーに移動する必要があります。私が抱えている問題は、これをどの言語で書き込もうとしても、答えがわからないようです。robocopyコマンドを使用せずにvbsまたはbat関連にする必要があります。私のドライブのいくつかは、fat32やntfsなどのすべての異なる形式です。バッチファイルで試したいくつかのスクリプトに関する私の問題は、ファイル名が長すぎることでした。したがって、私が行う必要のある主な機能は、画像を見つけてコピーし、存在する場合は_001 _002に名前を変更し、移動したファイルの数を数え、最後にそれらを削除するか、削除するために別のフォルダーに移動することです(私の目にはもう少し安全です)。私はこれに完全に困惑しているので、どんな助けもいただければ幸いです。
これが私が取り組んでいたが停止したばかりのスクリプトの1つです。これに伴う問題は、ファイルをコピーしたが、何らかの理由で拡張子を保持しなかったことです。これは私がオンラインで見つけてコードを少し変更したものでした。私はコードに精通していますが、何らかの理由でこれを理解できないようです。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set TESTFOLDER=allpictures
md "%TESTFOLDER%"
set /a counter=0
FOR /F "tokens=*" %%i IN ('DIR /S /B /A-D C:\Users\user1\Desktop\*.jpg') DO FOR /F "tokens=*" %%j IN ('DIR /B "%%i"') DO IF EXIST ".\%TESTFOLDER%\%%j" (
set /a counter=!counter!+1
echo folder: %TESTFOLDER%
copy "%%i" ".\%TESTFOLDER%\%%j_!counter!"
) ELSE copy /B "%%i" ".\%TESTFOLDER%\%%j"
:eof
編集:以下のVBScriptコード
Set fso = CreateObject("Scripting.FileSystemObject")
testfolder = ".\allpictures"
'fso.CreateFolder(testfolder)
CopyFiles fso.GetFolder("E:\")
Sub CopyFiles(fldr)
For Each f In fldr.Files
basename = fso.GetBaseName(f)
extension = fso.GetExtensionName(f)
If LCase(extension) = "jpg" Then
dest = fso.BuildPath(testfolder, f.Name)
count = 0
Do While fso.FileExists(dest)
count = count + 1
dest = fso.BuildPath(testfolder, basename & "_" & count & "." _
& extension)
Loop
f.Copy dest
End If
Next
For Each sf In fldr.SubFolders
CopyFiles sf
Next
End Sub