Показать полную графическую версию : [решено] Копирование в/из текущую/ей папку/и
Уважаемые знатоки!
Помогите написать 2 батника по следующим условиям:
При запуске первого бат - в папке, из которой произведен запуск батника, создается папка с текущей датой и временем, в которую копируется папка Mozilla, со всем содержимым, из скрытой директории %APPDATA%.
При запуске второго - выводится пронумерованный перечень папок с текущей датой, из директории в которой запущен батник, и предлагается "Выберите порядковый номер текущей даты для копирования", а после выбора (1,2,3 и т.д.) производится копирование папки Mozilla, из соответствующей папки с датой, в скрытую папку %APPDATA%, предварительно удалив в этой директории аналогичную папку если она там имеется.
Наверное очень сложно.. :)
Nuclears
19-09-2011, 01:25
Первый CMDшник
@echo off
setlocal enableextensions enabledelayedexpansion
set TmpDIR=%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%--%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%
XCOPY "%APPDATA%\Mozilla" %TmpDIR% /S/I/Q/Y >NUL
имя папки будет HH-MM-SS--DD-MM-YYYY
а вот со вторым сложновато, не осилю)
El Sanchez
19-09-2011, 21:23
имя папки будет HH-MM-SS--DD-MM-YYYY »
Наверное, лучше дату сначала ставить, легче сортировать папки по дате.
Батник №1
@Echo Off
Set Output=%DATE%--%TIME:~0,-3%
XCopy /SYQI "%APPDATA%\Mozilla" "%Output::=-%\Mozilla"
Батник №2
@Echo Off
SetLocal
For /F "Tokens=1* Delims=:" %%A In ('Dir /B /AD %DATE%*^|FindStr /N .') Do Echo %%A : %%B&Set _%%A=%%B
Set _ 1>nul 2>&1||GoTo :EoF
Set /P "N=Выберите порядковый номер текущей даты для копирования: "
If Defined _%N% RD /S /Q "%APPDATA%\Mozilla" 2>nul&Call XCopy /SYQI "%%_%N%%%\Mozilla" "%APPDATA%\Mozilla"
EndLocal
Просто волшебство какое-то! Супер! Спасибо!
Вот только если папка Mozilla в %APPDATA% не присутствует, то второй батник не срабатывает :( :)
Nuclears
20-09-2011, 00:09
Вот только если папка Mozilla в %APPDATA% не присутствует, то второй батник не срабатывает »
так проверку включите :)
@Echo Off
SetLocal
IF EXIST "%APPDATA%\Mozilla" (
For /F "Tokens=1* Delims=:" %%A In ('Dir /B /AD %DATE%*^|FindStr /N .') Do Echo %%A : %%B&Set _%%A=%%B
Set /P "N=Выберите порядковый номер текущей даты для копирования: "
If Defined _%N% RD /S /Q "%APPDATA%\Mozilla" 2>nul&&Call XCopy /SYQI "%%_%N%%%\Mozilla" "%APPDATA%\Mozilla"
) ELSE (
rem создадим папку %APPDATA%\Mozilla
MD %APPDATA%\Mozilla
rem и вот теперь выполним то, требовалось :)
For /F "Tokens=1* Delims=:" %%A In ('Dir /B /AD %DATE%*^|FindStr /N .') Do Echo %%A : %%B&Set _%%A=%%B
Set /P "N=Выберите порядковый номер текущей даты для копирования: "
If Defined _%N% RD /S /Q "%APPDATA%\Mozilla" 2>nul&&Call XCopy /SYQI "%%_%N%%%\Mozilla" "%APPDATA%\Mozilla"
)
El Sanchez
20-09-2011, 10:20
Вот только если папка Mozilla в %APPDATA% не присутствует, то второй батник не срабатывает »
4zz, я подумал, если удалять нечего в %APPDATA%, значит мозиллы на компе нет и копировать файлы смысла нет, но раз так, то изменил свой предыдущий пост плюс добавил проверку на присутствие папок с текущей датой.
El Sanchez,
Спасибо огромное все работает!!!! :)
Nuclears,
При запуске bat в случае отсутствия папки Mozilla в %APPDATA%, создает в текущей папке три пустые директории (and, data и setting) и выход. :)
В связи с тем, что при запущенной программе, часть файлов не копируется (пишет что используется другой программой), добавил принудительное завершение Mozillы
И добавил копирование скрытых, системных файлов, сохранение атрибутов, получилось так:
Батник1:
@echo off
chcp 1251
taskkill.exe /F /IM firefox.exe /T
ping -n 1 -w 5000 192.168.254.254 >nul
Set Output=%DATE%--%TIME:~0,-3%
XCopy /SEAHYQIRK "%APPDATA%\Mozilla" "%Output::=-%\Mozilla"
pause
Батник2:
@Echo Off
chcp 1251
taskkill.exe /F /IM firefox.exe /T
ping -n 1 -w 5000 192.168.254.254 >nul
SetLocal
For /F "Tokens=1* Delims=:" %%A In ('Dir /B /AD %DATE%*^|FindStr /N .') Do Echo %%A : %%B&Set _%%A=%%B
Set _ 1>nul 2>&1||GoTo :EoF
Set /P "N=Выберите порядковый номер текущей даты для копирования: "
If Defined _%N% RD /S /Q "%APPDATA%\Mozilla" 2>nul&Call XCopy /SEAHYQIRK "%%_%N%%%\Mozilla" "%APPDATA%\Mozilla"
EndLocal
Спасибо всем! :)
Nuclears
20-09-2011, 16:02
При запуске bat в случае отсутствия папки Mozilla в %APPDATA%, создает в текущей папке три пустые директории (and, data и setting) и выход. »
в ковычки заключить забыл)
MD "%APPDATA%\Mozilla"
Survover
18-01-2017, 21:02
Здравствуйте как мне скопировать файл из диска D:\Instal\Drivers\BloodyTonemaker1\audio_split.bat в C:\Users\Survover\AppData\Roaming\Microsoft\Windows\Start Menu\ пробовал вот так но ничего (
copy D:\Instal\Drivers\BloodyTonemaker1\audio_split.bat C:\Users\Survover\AppData\Roaming\Microsoft\Windows\Start Menu\audio_split.bat
megaloman
18-01-2017, 21:12
copy "D:\Instal\Drivers\BloodyTonemaker1\audio_split.bat" "C:\Users\Survover\AppData\Roaming\Microsoft\Windows\Start Menu\"
Survover
18-01-2017, 21:16
не копирует !
Survover
18-01-2017, 21:21
Все хорошо спасибо большое я путь вам не тот указал ! должно было быть C:\Users\Survover\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup а не Start Menu )))
megaloman, подскажите как написать что бы для любого пользователя было ? %USERS% ?
megaloman
18-01-2017, 21:47
copy "D:\Instal\Drivers\BloodyTonemaker1\audio_split.bat" "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\"
Чтобы проверить путь сделайте
echo "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\"
Если визуально правильно, сделайте
dir "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\"
В принципе, имя юзера можно взять как %Username% ,но это будет чуть длиннее
Survover
18-01-2017, 21:48
Спасибо большое !!!!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.