所以我有下面的批處理文件。批處理文件拖放多個文件從一個文件夾到一個新文件夾錯誤
@ECHO OFF
FOR %%I IN (.) DO SET FolderName=%%~nxI
MKDIR "C:\%FolderName%"
for %%i in (%*) do (
move "%%~i" "C:\%FolderName%"
)
所以,當我拖放多個文件到批處理文件,它會採取認爲我拖放型,在C創建一個新文件夾中的文件的文件夾的名稱:\具有相同名稱然後將文件移動到C:\
處的新文件夾中。示例:保存要移動的文件的文件夾是名稱Shop。然後將文件夾店位於
... \地面\鍾\塔\店
使用批處理文件將創建一個新的文件夾名稱店鋪C:\
例
C:\ Shop
當我一次拖放大約100個文件時,批處理文件就起作用。問題是,當我一次拖放300個文件時,它將返回錯誤,指出「文件名或擴展名太長」。我可以手動移動這些文件,所以我知道它不能由文件名太長造成。
然後我做了一個新的批處理文件思考也許這是move
命令或我的for循環的問題。所以我寫下面的批處理文件。
@echo off
FOR %%I IN (.) DO SET FolderName=%%~nxI
MKDIR "C:\%FolderName%"
MOVE "%cd%\*.*" "C:\%FolderName%"
現在上面的第二個批處理文件的工作原理與第一個批處理文件大致相同。只需要第二個批處理文件,我只需從要移動的文件夾中拖放一個文件,即可將第一個文件夾中的所有文件移動到C:\中的新文件夾,即使第一個文件夾1000個文件。
我的問題是爲什麼第一批文件失敗,如果我一次拖放太多的文件。使用第二批文件工作,所以它不可能是因爲move
命令還是它?由於我將所有文件從一個文件夾移動到另一個文件夾,第二個批處理文件符合我的需要,並且想知道是否會出現第二個批處理文件的問題或更好的方法。
謝謝你,這是很翔實。現在我明白爲什麼第一批文件失敗了。我按文件移動文件並創建新文件夾的原因是,新文件夾在運行批處理文件時會有一個新的「創建日期」,而我不希望文件夾名稱成爲日期。除非複製目錄也可以更改文件夾上的「創建日期」。 – Tou
我認爲在'''複製'''有一個參數來「觸摸」具有特定日期的所有文件...我不確定現在,你需要檢查那裏的手冊'''/ b'' '右[複製命令行開關(https://technet.microsoft.com/en-us/library/bb490886.aspx) –
一個選項可以是拖放容器目錄到批處理文件,而不是大量的文件;因此批處理腳本可以使用'for'來枚舉目錄內容(即使在使用'/ R'開關時也是遞歸的),所以避免使用太長的命令行;當然也可以應用特定的過濾... – aschipfl