甚至不知道這是否可能,但我想我會試一試。批處理文件找到所有圖像並複製到一個文件夾
所以這是我的問題。我需要爲所有圖像搜索多個大硬盤(1TB和更大)並將它們移動到一個文件夾。我遇到的問題是不管我用什麼語言寫這篇文章,我似乎無法找出答案。我要麼是不使用robocopy命令,而要使用vbs或bat。我的一些驅動器都是不同的格式,如fat32和ntfs。我用批處理文件試過的幾個腳本的問題是我的文件名太長。所以我需要它做的主要功能是找到圖像,複製它們,如果它們存在,用_001 _002重命名它們,計算有多少文件被移動,然後最後刪除它們或將它們移動到單獨的文件夾以刪除(a在我眼中更安全)。任何幫助將不勝感激,因爲我完全沉迷於此。
這是我正在處理的一個腳本,但剛剛停止。問題在於它複製了文件,但由於某種原因沒有保留擴展名。這是我在網上找到的,並修改了一些代碼。我對代碼非常熟悉,但由於某種原因似乎無法弄清楚這一點。
@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
你嘗試過什麼?爲什麼不使用Perl?我們是否知道文件的所有擴展名(.jpg,.gif等)? –
從來沒有真正想過使用Perl來說實話。這對我來說會是更好的選擇嗎?至於文件擴展名是,我正在尋找所有jpg擴展名。最終我想用這個備份來幫助組織我的文件,這是我幫助我保持文件有序的主要目標。例如,如果我想在以後搜索mov文件。 – dkrider471
我在原始問題中添加了我正在處理的代碼。 – dkrider471