|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум 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 |
|
(*.*) Сообщения: 36574
|
Профиль | Сайт | Отправить PM | Цитировать gora, надо, чтобы люди клали скрипт в папку - это избавит от вопросов^^
|
|
------- Отправлено: 09:11, 29-03-2013 | #4 |
|
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Vadikan:
А для совсем простого использования этого функционала у меня есть такая же опция в SetTools. Там просто выделяются нужные объекты и нажимается пункт в контекстном меню. |
||
|
Отправлено: 09:16, 29-03-2013 | #5 |
|
(*.*) Сообщения: 36574
|
Профиль | Сайт | Отправить 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 | |
|