|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Нуль-копия папки для выкладывания на форуме. |
|
CMD/BAT - Нуль-копия папки для выкладывания на форуме.
|
Ушёл из жизни Сообщения: 6021 |
На этом форуме часто приходится наблюдать следующую картину. ТС пытается сформулировать свою задачу и "на пальцах" объяснить в каких папках у него находятся файлы\папки, которые ему требуется обработать соответствующим образом. Оценить структуру папок\файлов, их взаимное расположение, их имена и расширения, а также отсутствие в именах спец. символов, по такому описанию бывает крайне затруднительно. Переписка с ТС и выяснение всех деталей структуры занимает порой большую часть ветки и "напрягает" отвечающих созданием ненужных для ТС вариантов скриптов, основанных на гаданиях\предположениях.
Гораздо удобнее было бы увидеть эту структуру, но папки и файлы в них могут иметь большой размер или содержать конфиденциальную информацию. Для таких случаев удобно пользоваться нуль-копией папки\папок, в которой сохранена вся структура вложенных папок и находящихся в них файлов с сохранением их названий, но все файлы имеют нулевой размер и не содержат ни какой информации. Предлагаю вариант скрипта для создания такой нуль-копии папки: @Echo Off ChCp 1251>Nul If "%~1"=="" ( Echo The correct syntax: Echo %~nx0 "Full\path\to\Folder 1" ["Full\path\to\Folder 2"] ... Pause>Nul Exit ) For /F "Tokens=1 Delims=." %%i In ('WMIC OS Get LocalDateTime^|Find "."') Do Set t=%%i Set zDT=_Zero_%t:~2,2%%t:~4,2%%t:~6,2%_%t:~8,2%-%t:~10,2% Set f=%~1& Set cnt=2& Set c=0& Set cf=0 :_loop If "%f:~0,1%"=="\" Set /A cnt+=1 Set f=%f:~1% If Defined f GoTo _loop Set /A cntI=cnt-1 If "%~2"=="" ( If Exist "%~1\*" Call :_makeDir "%~1%zDT%" Call :_item "%~1" "%~1%zDT%" "%~1" "%cnt%" "%~1%zDT%" "%~dpn1%zDT%%~x1" If Exist "%~1\*" For /R "%~1%zDT%" %%f In (.) Do Set /A cf+=1 ) Else ( Call :_makeDir "%~dp1%zDT%" For %%i In (%*) Do Call :_item "%%~i" "%~dp1%zDT%\%%~nxi" "%~dp1%%~nxi" "%cntI%" "%~dp1%zDT%" "%~dp1%zDT%\%%~nxi" For /R "%~dp1%zDT%" %%f In (.) Do Set /A cf+=1 ) Echo Complete! Echo Folders=%cf% Files=%c% Echo. Pause Exit :_item If Exist "%~1\*" ( xCopy /T /E /H /K "%~1" "%~2\"|| GoTo :_err PushD "%~3" For /F "tokens=%~4* delims=\" %%a In ('Dir /S /B /A:-D') Do ( If "%%~b"=="" (CD.>"%~5\%%~a") Else CD.>"%~5\%%~a\%%~b" Set /A c+=1 ) PopD ) Else ( CD.>"%~6" Set /A c+=1 ) GoTo :EOF :_err For /R "%~2" %%f In (.) Do Set erf=%%f Set erf=%erf:~0,-2% Call Set erf=%%erf:%~2=%~1%% RD /S /Q "%~5" Echo Error xCopy on file: Echo %erf% Pause>Nul Exit :_makeDir If Exist "%~1" RD /S /Q "%~1" MD "%~1" GoTo :EOF Рад буду услышать любую конструктивную критику и предложения по оптимизации скрипта. |
|
Отправлено: 10:26, 12-03-2013 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать Почему-то не получается. Где должна создаться эта нуль-папка?
|
Отправлено: 12:28, 28-03-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата IntuitOS:
Править скрипт не надо. Нужно его запустить с параметром в качестве которого нужно указать полный путь к папке, которую нужно обработать, заключенного в кавычки. Пример: |
|
Отправлено: 12:37, 28-03-2013 | #3 |
(*.*) Сообщения: 36510
|
Профиль | Сайт | Отправить PM | Цитировать gora, надо, чтобы люди клали скрипт в папку - это избавит от вопросов^^
|
------- Отправлено: 09:11, 29-03-2013 | #4 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Vadikan:
А для совсем простого использования этого функционала у меня есть такая же опция в SetTools. Там просто выделяются нужные объекты и нажимается пункт в контекстном меню. |
||
Отправлено: 09:16, 29-03-2013 | #5 |
(*.*) Сообщения: 36510
|
Профиль | Сайт | Отправить PM | Цитировать gora, ок, тогда в шапке понятно объясните это тем, кто будет послан сюда
![]() |
------- Отправлено: 12:52, 29-03-2013 | #6 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать А если имена файлов в обрабатываемой папке на китайском языке, как тогда быть?
|
Отправлено: 19:54, 05-12-2013 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Нуль-модемный кабель | truvo | Хочу все знать | 20 | 21-12-2011 14:20 | |
Использование - Копия Windows, выполняемая на этом компьютере, не прошла проверку на подлинность. | IlyaGulya | Лицензирование продуктов Microsoft | 0 | 12-06-2010 06:27 | |
Разное - com порт в ноутбуке, нуль-модем, PCI EXPRESS | Vyacheslavfk | Прочее железо | 41 | 17-10-2008 13:51 | |
Нуль-модемный кабель | Guest | Сетевые технологии | 2 | 23-08-2004 19:47 | |
Нуль модем | Roman Go | Хочу все знать | 4 | 30-11-2002 01:19 |
|