Итак, у меня есть пакетный файл ниже.Пакетный файл Перетаскивание нескольких файлов из одной папки в новую папку Ошибка
@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
Я думаю, что в '' 'copy' '' есть параметр для «касания» всех файлов с определенной датой ... я не уверен прямо сейчас, вам нужно будет проверить руководства там для '' '/ b'' 'right [copy command line switches] (https://technet.microsoft.com/en-us/library/bb490886.aspx) –
Опцией может быть перетаскивание каталога контейнера в пакетный файл, а не на многочисленные файлы; поэтому пакетный скрипт может перечислить содержимое каталога самостоятельно, используя 'for' (даже рекурсивно при использовании switch'/R'), поэтому избегается слишком длинная командная строка; конечно, специальная фильтрация также может быть применена ... – aschipfl