Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 4

Автор: GORA2
Дата сообщения: 08.10.2007 16:01

Цитата:
Попробуй сначала перейти в корень диска
Не понял Папка создается и в ней оказывается мой батник (тут я не могу изменить ни чего) Все мои действия я могу выполнять из этого батника только. Как тут быть?
Автор: KapralBel
Дата сообщения: 08.10.2007 16:07
GORA2

Код: @Echo Off
Set fld=D:\Test
RD /q /s %fld%
Автор: 01MDM
Дата сообщения: 08.10.2007 16:21
GORA2

Код:
@echo off
start cmd /c cd .. && rd /s /q %%commander_path%%
Автор: Dieselman
Дата сообщения: 08.10.2007 19:33
Помогите решить две задачки
1. На диске A надо скрыть файлы созданые после определённой даты,дата задаётся с клавиатуры.
2.Уничтожить даный каталог,имя которого задаётся как параметр.Допустим сначала кидает в корневой каталог и выбивает список подкаталогов,ввожу с клавиатуры имя каталога со списка и отображает новый список подкаталогов(при этом cls-ило,чтобы не засоряло постоянно экран сдоровенным списком и возможностью вернутся на пункт обратно),а для удаления используется допустим команда %Dirname% del
Автор: KapralBel
Дата сообщения: 08.10.2007 23:10
Dieselman
2. Выбери любой файл менеджер - ФАР, Тотал, проводник на худой конец

1. Что ты понимаешь под словом скрыть
Автор: GORA2
Дата сообщения: 09.10.2007 09:31
Так и не удается мне удалить эту злополучную папку. Все по порядку:
1 Имеется 7z SFX архив который распаковывает свое содержимое в папку %COMMANDER_PATH%
2 Полный путь к этой папке N:\071004\setup_button\%COMMANDER_PATH%\ (указанный полный путь - частный случай)
3 Структура папки:
%COMMANDER_PATH%
Utilites
SFX Tool
install_button.bat
nircmdc.exe

4 После распаковки 7z SFX архива из него происходит запуск следующей строкой RunProgram="hidcon:install_button.bat"
5 В install_button.bat в конце есть строка
RD /q /s N:\071004\setup_button\%%COMMANDER_PATH%%
6 В результате удаляется папка SFX Tool со всем содержимым и файлы на ее уровне т.е install_button.bat и nircmdc.exe, а папка %COMMANDER_PATH% с вложенной в нее папкой Utilites так и не удаляются!!!

Подскажите, где у меня ошибка или как обойти эту проблему?
Автор: Nagual
Дата сообщения: 09.10.2007 10:58
GORA2
вроде как

Код: cd "%%commander_path%%\.."
rd/s/q "%%commander_path%%"
Автор: KapralBel
Дата сообщения: 09.10.2007 11:01
GORA2

Код: @Echo Off
Set fld=D:\Test\Test\

CD \
Echo RD /q/s %fld%>dlt.cmd

dlt.cmd
Автор: GORA2
Дата сообщения: 09.10.2007 11:04
Nagual
Так не проходит. Удаляется только батник.
Автор: KapralBel
Дата сообщения: 09.10.2007 11:09
GORA2
А мой вариант - работает
Автор: Nagual
Дата сообщения: 09.10.2007 11:15
GORA2
не совсем понятно, ты хочешь просто удалить папку %commander_path%?
кажется понял, у тебя текущий путь вовсе не %commander_path%
сделай проверку и увидишь

Код: cd\&rd/s/q "%%commander_path%%\.."
Автор: KapralBel
Дата сообщения: 09.10.2007 11:22
Не удаляет другие папки - потому что при выполнении - чего-либо из конкретной папки - Винда блокирует эту папку
Поэтму я передаю управление батнику лежащему в корне диска, вот он и удаляет нужную папку
Автор: Nagual
Дата сообщения: 09.10.2007 11:34
мне кажется просто висит в процессах hidcon
поэтому алго такой:
для начала убить его
taskkill /f /im hidcon.exe
определить точно где же у тебя все таки %commander_path%, думаю с этим повозиться придётся
перейти в другое место, например cd\
после убить %commander_path%
по-моему там еще надо ставить слеш на конце, то есть убивать не %commander_path%, а %commander_path%\
тестировать лень
Автор: GORA2
Дата сообщения: 09.10.2007 11:47
KapralBel

Цитата:
А мой вариант - работает

Работает, да еще как!!! Пока подставлял свои пути, где то малость промахнулся так снесло не только папку %COMMANDER_PATH%, а и все что было рядом с ней. Но вроде все нужное сумел восстановить из других источников.
Сейчас ваш вариант у меня выглядит так
Код: Set fld=E:\test1\test2\%%COMMANDER_PATH%%\
CD \
Echo RD /q/s %fld%>dlt.cmd
Echo DEL dlt.cmd>>dlt.cmd
dlt.cmd
Автор: Dieselman
Дата сообщения: 09.10.2007 13:38
И обратно к задачкам
1. На диске A надо скрыть файлы(ATTRIB +h) созданые после определённой даты(например 01.01.2000),дата задаётся с клавиатуры.
2.Упрощенный вариант задачи
Уничтожить даный каталог,имя которого задаётся как параметр.Тоесть я с клавиатуры ввожу название каталога,оно ищет соответствие на всём диске.Если сувщевствует такой каталог оно укзаует полный путь к нему и запрос на удаление,а если нет совпадений то выбивает сообщение о том что такого каталога нет на диске.
Автор: Elroir
Дата сообщения: 09.10.2007 14:27
Dieselman

Цитата:
Уничтожить даный каталог,имя которого задаётся как параметр.Тоесть я с клавиатуры ввожу название каталога,оно ищет соответствие на всём диске.Если сувщевствует такой каталог оно укзаует полный путь к нему и запрос на удаление,а если нет совпадений то выбивает сообщение о том что такого каталога нет на диске.


Код:
@echo off
setlocal
set /p "folder=Enter folder's name - "
for /f "tokens=*" %%a in ('dir /s /ad /b "%~d0\%folder%" 2^>nul') do call :ask "%%a"
if not defined found (echo No such folder exists)
goto :EOF
:ask
set "found=yes"
set /p "answer=Do you want to delete folder %1 (y/n)? "
if /i "%answer:~0,1%"=="y" (rd /q /s %1)
Автор: Tipulatoid
Дата сообщения: 09.10.2007 15:32
Dieselman

Цитата:
2.Уничтожить даный каталог,имя которого задаётся как параметр.Допустим сначала кидает в корневой каталог и выбивает список подкаталогов,ввожу с клавиатуры имя каталога со списка и отображает новый список подкаталогов(при этом cls-ило,чтобы не засоряло постоянно экран сдоровенным списком и возможностью вернутся на пункт обратно),а для удаления используется допустим команда %Dirname% del


Собственно, Elroir уже ответил, но я приведу и свой вариант:

Код: @echo off
setlocal enabledelayedexpansion

set start_folder=%CD%

:quest
cls
set folder_num=
echo Список подкаталогов текущего каталога:
set countdir=0
for /f "tokens=*" %%a in ('dir /b /a:d /o:n') do (
set /a countdir+=1
echo [!countdir!] %%a
)


echo.
echo Перед Вами список текущих каталогов. Ваши действия?
echo a № - переход в каталог с указанным номером;
echo d № - удаление каталога с указанным номером;
echo u - переход на каталог выше;
echo x - выход

set /p choice=


for /f "tokens=1,2" %%a in ('echo %choice%') do (
if %%a==a (
set folder_num=%%b
goto perehod
)
if %%a==d (
set folder_num=%%b
goto delete
)
if %%a==u goto up
if %%a==x (goto exit) else (
echo 
echo Неверные параметры
pause
goto quest
)
)

:perehod

if not defined folder_num (
echo Не указан номер каталога
pause
goto quest
)

set cdir=0
for /f "tokens=*" %%a in ('dir /b /a:d /o:n') do (
set /a cdir+=1
if /i !cdir! equ %folder_num% (
cd "%%a"
goto quest
)
)

goto quest

:delete

if not defined folder_num (
echo Не указан номер каталога
pause
goto quest
)

set cdir=0
for /f "tokens=*" %%a in ('dir /b /a:d /o:n') do (
set /a cdir+=1
if /i !cdir! equ %folder_num% (
rd "%%a" /s
goto quest
)
)

goto quest

:up
cd..
goto quest

:exit
cd %start_folder%
goto :eof
Автор: Dieselman
Дата сообщения: 09.10.2007 15:59

Цитата:

Собственно, Elroir уже ответил, но я приведу и свой вариант:

Мастер,нет слов!Огромное спасибо
Не подскажите ещё как добавить :переименование каталога,создание нового,вывод даты и времени создания каталога?
Автор: Elroir
Дата сообщения: 09.10.2007 18:04
Tipulatoid
Красиво сделано!
А для того, чтобы не появлялись ненужные смайлики в коде - надо убирать галочку со строчки "Разрешить смайлики" внизу, перед отправкой сообщения (можно нажать "Редактировать" и убрать их).
Автор: Tipulatoid
Дата сообщения: 10.10.2007 05:09
Dieselman

Цитата:
Не подскажите ещё как добавить :переименование каталога,создание нового,вывод даты и времени создания каталога?

Это уже мини-файловый менеджер получается :-)

Код: @echo off
setlocal enabledelayedexpansion

set start_folder=%CD%

:quest
cls
set folder_num=
set name=
set new_name=
set choice=
echo Список подкаталогов текущего каталога ^(%CD%^):
set countdir=0
for /f "tokens=*" %%a in ('dir /b /a:d /o:n') do (
set /a countdir+=1
echo [!countdir!] %%a
)


echo.
echo Перед Вами список текущих каталогов. Ваши действия?
echo a № - переход в каталог с указанным номером;
echo d № - удаление каталога с указанным номером;
echo r № новое название - переименование каталога с указанным номером;
echo m название - создание нового каталога;
echo t № - вывод даты и времени создания каталога с указанным номером;
echo u - переход на каталог выше;
echo x - выход

set /p choice=


for /f "tokens=1,2*" %%a in ('echo %choice%') do (
if %%a==a (
set folder_num=%%b
goto perehod
)

if %%a==d (
set folder_num=%%b
goto delete
)

if %%a==r (
set folder_num=%%b
set new_name=%%c
goto rename
)

if %%a==m goto create

if %%a==t (
set folder_num=%%b
goto date
)

if %%a==u goto up

if %%a==x (goto exit) else (
echo 
echo Неверные параметры
pause
goto quest
)
)

:perehod

if not defined folder_num (
echo Не указан номер каталога
pause
goto quest
)

set cdir=0
for /f "tokens=*" %%a in ('dir /b /a:d /o:n') do (
set /a cdir+=1
if /i !cdir! equ %folder_num% (
cd "%%a"
goto quest
)
)

goto quest

:delete

if not defined folder_num (
echo Не указан номер каталога
pause
goto quest
)

set cdir=0
for /f "tokens=*" %%a in ('dir /b /a:d /o:n') do (
set /a cdir+=1
if /i !cdir! equ %folder_num% (
rd "%%a" /s
goto quest
)
)

goto quest

:rename

if not defined folder_num (
echo Не указан номер каталога
pause
goto quest
)

if not defined new_name (
echo Не указано новое название каталога
pause
goto quest
)

set cdir=0
for /f "tokens=*" %%a in ('dir /b /a:d /o:n') do (
set /a cdir+=1
if /i !cdir! equ %folder_num% (
move "%%a" "%new_name%"
goto quest
)
)

goto quest

:create

for /f "tokens=1*" %%a in ('echo %choice%') do (
set name=%%b
)

if not defined name (
echo Не указано название нового каталога
pause
goto quest
)

md "%name%"

goto quest

:date

if not defined folder_num (
echo Не указан номер каталога
pause
goto quest
)

set cdir=0
for /f "skip=7 tokens=*" %%a in ('dir /a:d /o:n') do (
set /a cdir+=1
if /i !cdir! equ %folder_num% (
echo %%a
pause
goto quest
)
)

goto quest

:up
cd..
goto quest

:exit
cd %start_folder%
goto :eof
Автор: Dieselman
Дата сообщения: 10.10.2007 09:51
Сделано на высшем уровне!
Сам бы долго мучался да и не факт что бы сделал!
Огромное тебе спасибо!
Автор: GORA2
Дата сообщения: 11.10.2007 08:10
Простите мою безграмотность, но что означает * в данной строке:
Код: xcopy * "%ProgramFiles%\Miranda IM" /s /e /i /y
Автор: Nagual
Дата сообщения: 11.10.2007 08:17
GORA2
то же что и *.* в текущей папке
Автор: GORA2
Дата сообщения: 11.10.2007 08:26
Nagual

Цитата:
то же что и *.* в текущей папке
А что обозначает *.* в текущей папке? Если Вы имеете ввиду любой файл с любым расширением, то папки не подпадают под данный постановочный знак. Или я не прав? Где можно подробнее почитать об этом знаке *?
Автор: Nagual
Дата сообщения: 11.10.2007 08:35
GORA2
* имеется в виду все объекты в текущей папке (из которой запущен сценарий), включая директории
где почитать — не знаю

Добавлено:
если нужны только файлы, можно делать так:
xcopy *.???? "%ProgramFiles%\Miranda IM" /s /e /i /y
Автор: GORA2
Дата сообщения: 11.10.2007 08:46
Nagual
И много там еще таких комбинаций? Спасибо конечно, но хотелось бы еще и ссылку на источник.
Автор: Nagual
Дата сообщения: 11.10.2007 08:51
GORA2
может где-нить здесь
Автор: spidermix
Дата сообщения: 11.10.2007 14:13
Есть задача:
Выделенный сервер с WinXP Pro.
Необходимо написать синхронизацию клиентских машин с этим сервером например в 23:00 каждого дня.
Нарыл инфу по cwRsync. Не могу одолеть. Знающие помогите.
Сервер и клиентские машины на WinXP.
На сервер (например, 192.168.0.1) ставлю cwRsync server. Создаю папку D:\games, туда выкладываю все игры, которые необходимо скопировать на клиентский компьютер (например, 192.168.0.2).
На клиенте ставлю cwRsync client.
Вот теперь задача синхронизировать папку D:\games сервера и клиента.
Задача написать батник для клиентской машины и запускать его например в 23:00 каждого дня.
Помогите, знающие
Автор: KapralBel
Дата сообщения: 11.10.2007 14:34
spidermix


Код: RoboCopy D:\Games \\192.168.0.2\D$\Games /B /Tee /NP /Mir /NDL /CopyAll /XO /R:2 /W:5 /Log+:C:\CopyGames.Log
RoboCopy D:\Games \\192.168.0.3\D$\Games /B /Tee /NP /Mir /NDL /CopyAll /XO /R:2 /W:5 /Log+:C:\CopyGames.Log
Автор: spidermix
Дата сообщения: 11.10.2007 15:30
ругается на ключ /B...
Есть ли описание параметров запуска на русском языке (всмысле ключей).

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Доступ к реестру через RegEdit?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.