Копирование и удаление файлов по маске
Здравствуйте.
Помогите пожалуйста решить проблему. Есть папка с подпапками (около 30 штук). В каждой подпапке находятся текстовые файлы (всегда 900 txt). Файлы имеют такой вид Код:
result0000000.txt Код:
setlocal enableextensions Конечно можно прописать список из 600 файлов, но неужели нет более элегантного решения? А в другой подпапке нужно перенести из одной папки в другую файлы с result0000599.txt по result0000899.txt. Тут я уже не смогла найти нужный скрипт... Хоть я и выбрала категорию cmd/bat, способ решения мне не важен :) С уважением, Юлия |
Цитата:
Код:
for /l %i in (299,1,899) do @del /s /q "E:\Песочница\0184\result0000%i.txt" 2>nul Цитата:
|
Я через AutoScriptWriter записала себе порядок действий по генерации файлов.
Приведу пример. Есть основная папка work, а в ней подпапки test1, test2, test3, test4 и т.д.. В каждой из этих подпапок по 900 txt файлов. В папке test1 нужно оставить первые 300 файлов (result0000000.txt - result0000299.txt), все остальные удалить. Из папки test2 перенести (result0000300.txt - result0000599.txt) в папку test3, а (result0000599.txt - result0000899.txt) в test4. Надеюсь не косноязычно получилось :) Цитата:
|
Цитата:
2. Как поступать с файлами из test5, test6 … testNN? 3. Сами папки вида testXX не имеют вложенных? То есть, не надо искать файлы result0000XX.txt ещё и во вложенных в test1, test2 …? Цитата:
2. Если — «Существуют», то что делать, если в test3 и/или в test4 окажутся одноимённые файлы? Цитата:
|
Как я себе представляю логику скрипта. Вначале я распределяю файлы по папкам, после переименовываю их в result0000000.txt - result0000299.txt, а все остальные удаляю из всех папок.
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Код:
MD D:\work\notarius_pomosh |
...что-то тема затихла...
А как можно запустить этот код из батника? Код:
for /l %i in (299,1,899) do @del /s /q "E:\Песочница\0184\result0000%i.txt" 2>nul |
Цитата:
Цитата:
Код:
@echo off |
Цитата:
Цитата:
Код:
@Echo Off Потом так переименую для каждой папки Код:
@echo off Код:
@echo off |
D:\work\nasledstvo\*.txt
ren "%%i" "file!lCount!%%~xi" выполнять не рекомендую, замучаетесь потом маску выставлять. file1.txt file10.txt file100.txt Сделайте себе несколько батников 1. Удаление 600 файлов. 2. Перенос из папки в папку 300 файлов. (замените в скрипте из второго поста @del на move и соответствующие цифры. удаление 600 файлов из папки test1 del600.cmd d:\test1 удаление 600 файлов из папки test22 del600.cmd d:\test22 тело Код:
for /l %%i in (299,1,899) do del /q "%1%%i.txt" 2>nul перемещение из d:\test1 в d:\test2 move599.cmd d:\test1 d:\test2 Код:
for /l %%i in (299,1,599) do move "%1%%i.txt" "%2" крайне рекомендую все папки по которым будет проводиться очистка заархивировать и спрятать на другой диск. при проверке батников можно перед командами del, Move поставить echo. Будет длинный список команд . Настоятельно рекомендую прочитать справку по командам for, if, set Обязательно читать справку по del, Move и любым командам которые удаляют/копируют/перемещают папки или файлы. cmd /k help for help if help set help В путях пускай не будет пробелов, %, !, ~ и других спец символов, аккуратней с русскими буквами |
Цитата:
Максимум того, что могу предложить — это дать примерное представление. |
Прошу прощения, если пишу не туда, помогите с такой проблемой, вроде простая проблема, но не могу сообразить как ее решить:
При запуске батника необходимо сделать резервную копию файла: md "%CD%\rezerv" copy "%CD%\test.exe" "%CD%\rezerv" Дальше как продолжить, чтоб копия не перемещалась в папку rezerv, если там уже есть test.exe? Да, и желательно бы чтоб сообщение в строке появилось, что файл уже существует. Спасибо заранее. |
Время: 17:10. |
Время: 17:10.
© OSzone.net 2001-