Хмм , пишет файл не найден... какой файл? Насоздовал различных файлов , он не удалил ниодин , обьясните пожалуйсто как скрипт должен работать
» Задачи на bat-файлах 7
01MDM
значит, если у меня батник с аргументом daily (например) то мне в синтаксисе дефис не прибавлять.
выбрать этот вариант -
Цитата:
в частном случае так
Код: hstart /NOCONSOLE "c:\file.bat daily"
значит, если у меня батник с аргументом daily (например) то мне в синтаксисе дефис не прибавлять.
выбрать этот вариант -
Цитата:
Код:hstart /NOCONSOLE "c:\file.bat arg1 arg2 arg3"
в частном случае так
Код: hstart /NOCONSOLE "c:\file.bat daily"
Тоже самое ...
ZidanCo
Цитата:
удали строчку @echo off и запусти батник из консоли и увидишь листинг, как он отрабатывает
Добавлено:
ZidanCo
у меня все *.bat-файлы удалил
вот листинг
W:\>remover.bat
W:\>if "_" NEQ "_" goto:arg1
W:\>for /F "tokens=* delims=" %i in ('dir /b /o:n w:\folder') do call:_1 "%i" & goto:restart
W:\>call:_1 "aaa.bat" & goto:restart
W:\>set "name=aaa.bat"
W:\>goto:eof
W:\>cmd /c remover.bat "aaa.bat"
W:\>if "_"aaa.bat"" NEQ "_" goto:arg1
W:\>set "ext=.bat"
W:\>del /q w:\folder\*.bat
W:\>goto:eof
W:\>
p.s.
можно еще в строке
if "_%1" neq "_" goto:arg1 поменять на if "_%~1" neq "_" goto:arg1
если есть имена на кириллице - то chcp 1251
Цитата:
обьясните пожалуйсто как скрипт должен работать
удали строчку @echo off и запусти батник из консоли и увидишь листинг, как он отрабатывает
Добавлено:
ZidanCo
у меня все *.bat-файлы удалил
вот листинг
W:\>remover.bat
W:\>if "_" NEQ "_" goto:arg1
W:\>for /F "tokens=* delims=" %i in ('dir /b /o:n w:\folder') do call:_1 "%i" & goto:restart
W:\>call:_1 "aaa.bat" & goto:restart
W:\>set "name=aaa.bat"
W:\>goto:eof
W:\>cmd /c remover.bat "aaa.bat"
W:\>if "_"aaa.bat"" NEQ "_" goto:arg1
W:\>set "ext=.bat"
W:\>del /q w:\folder\*.bat
W:\>goto:eof
W:\>
p.s.
можно еще в строке
if "_%1" neq "_" goto:arg1 поменять на if "_%~1" neq "_" goto:arg1
если есть имена на кириллице - то chcp 1251
На моменте
C:\Users\Администратор>for /F "tokens=* delims=" %i in ('dir /b /o:n "pathtofold
er"') do call:_1 "%i" & goto:restart
Файл не найден
Добавлено:
А не слишком ли сложная реализация , для задания на втором курсе колледжа?
Думалось будет по проще , тут для меня мало что понятно к сожалению
Добавлено:
Все разобрался , действительно - удаляет все файлы с тем же расширением , что и первый файл в папке
Большое спасибо
Добавлено:
Хмм , если просто запустить bat файл , то он ничего не сделает , удаляет только если запускаю через cmd с указанием пути к файлу. Не знаете как исправить?
C:\Users\Администратор>for /F "tokens=* delims=" %i in ('dir /b /o:n "pathtofold
er"') do call:_1 "%i" & goto:restart
Файл не найден
Добавлено:
А не слишком ли сложная реализация , для задания на втором курсе колледжа?
Думалось будет по проще , тут для меня мало что понятно к сожалению
Добавлено:
Все разобрался , действительно - удаляет все файлы с тем же расширением , что и первый файл в папке
Большое спасибо
Добавлено:
Хмм , если просто запустить bat файл , то он ничего не сделает , удаляет только если запускаю через cmd с указанием пути к файлу. Не знаете как исправить?
ZidanCo
Цитата:
попробуй "мышиный" вариант
Код: if "_%~1" neq "_" goto:arg1
for /f "tokens=* delims=" %%i in ('dir /b /o:n w:\folder') do call:_1 "%%i" & goto:restart
:_1
set "name=%~1"
goto:eof
:arg1
set "ext=%~x1"
del /q w:\folder\*%ext%
goto:eof
:restart
cmd /c %~0 "%name%"
Цитата:
Хмм , если просто запустить bat файл , то он ничего не сделает , удаляет только если запускаю через cmd с указанием пути к файлу. Не знаете как исправить?
попробуй "мышиный" вариант
Код: if "_%~1" neq "_" goto:arg1
for /f "tokens=* delims=" %%i in ('dir /b /o:n w:\folder') do call:_1 "%%i" & goto:restart
:_1
set "name=%~1"
goto:eof
:arg1
set "ext=%~x1"
del /q w:\folder\*%ext%
goto:eof
:restart
cmd /c %~0 "%name%"
ZidanCo
Цитата:
Да уж накрутили:
Код:
@echo off
for /f "tokens=*" %%i in ('dir /b test') do del test\*%%~xi && goto:eof
Цитата:
А не слишком ли сложная реализация , для задания на втором курсе колледжа?
Да уж накрутили:
Код:
@echo off
for /f "tokens=*" %%i in ('dir /b test') do del test\*%%~xi && goto:eof
01MDM
Цитата:
забыл про modifiers в переменных итератора
Цитата:
Да уж накрутили:
забыл про modifiers в переменных итератора
SANIOK_AV
Цитата:
Код: @echo off
set count=0
set "destination=D:\2\"
set "source=D:\1\"
pushd %source%
for /D %%a in (%source%*) do set /a count+=1
set /a count-=1
for /f "skip=%count% tokens=*" %%i in ('dir /a:D /o:D /b') do call copy "%%i"
popd
goto :eof
copy
set young=%1
xcopy %source%%young% %destination%%young%\ /Y
exit /b
:eof
Цитата:
нужно из каталога C:\1\ скопировать в каталог C:\2\ подкаталог, который самый свежий по дате создания...
Код: @echo off
set count=0
set "destination=D:\2\"
set "source=D:\1\"
pushd %source%
for /D %%a in (%source%*) do set /a count+=1
set /a count-=1
for /f "skip=%count% tokens=*" %%i in ('dir /a:D /o:D /b') do call copy "%%i"
popd
goto :eof
copy
set young=%1
xcopy %source%%young% %destination%%young%\ /Y
exit /b
:eof
SANIOK_AV
Код: @echo off
for /f "tokens=*" %%i in ('dir C:\1 /a:D /o:-D /T:c /S /b') do (
xcopy "%%i" C:\2\1 /s /e /r /h /Y /i
goto :eof
)
Код: @echo off
for /f "tokens=*" %%i in ('dir C:\1 /a:D /o:-D /T:c /S /b') do (
xcopy "%%i" C:\2\1 /s /e /r /h /Y /i
goto :eof
)
Помогите плиз. Я весь мозг уже сломала.
Задача такова: нужно прочитать все текстовые файлы и сравнить у них дату создания с текущей датой, если они равны то скопировать файл в другую папку. Делаю это по следующему коду на основании прочтенных топиков в форумах, но у меня не работает
@Echo Off
setlocal enabledelayedexpansion
FOR %%1 IN (D:\test\*.txt) DO (
set tmpd=%~t1 >>15.log
set tmpd=!tmpd:~0,13! >>15.log
IF "!tmpd!" == %DATE% (
set ntmp=%~n1
copy /Y D:\test\%ntmp% C:\%ntmp% >>15.log
)
)
Пришлось использовать в условии "==", так как на EQL ругается, что нет такой функции
Задача такова: нужно прочитать все текстовые файлы и сравнить у них дату создания с текущей датой, если они равны то скопировать файл в другую папку. Делаю это по следующему коду на основании прочтенных топиков в форумах, но у меня не работает
@Echo Off
setlocal enabledelayedexpansion
FOR %%1 IN (D:\test\*.txt) DO (
set tmpd=%~t1 >>15.log
set tmpd=!tmpd:~0,13! >>15.log
IF "!tmpd!" == %DATE% (
set ntmp=%~n1
copy /Y D:\test\%ntmp% C:\%ntmp% >>15.log
)
)
Пришлось использовать в условии "==", так как на EQL ругается, что нет такой функции
Ну может всё таки кто то подскажет мне по моему вопросу 2 страницы назад ?
>>
Вопрос вот какой:
Код: @echo off
cls
echo Protecting srcds from crashes...
title srcds Watchdog
:srcds
echo (%time%) srcds started.
start /wait srcds.exe
echo (%time%) WARNING: srcds closed or crashed, restarting....
goto srcds
>>
Вопрос вот какой:
Код: @echo off
cls
echo Protecting srcds from crashes...
title srcds Watchdog
:srcds
echo (%time%) srcds started.
start /wait srcds.exe
echo (%time%) WARNING: srcds closed or crashed, restarting....
goto srcds
Цитата:
если вдруг екзешник выбивает критикалом либо закрывается как то не так как всегда,
При этом в диспеичере задач процесс srcds.exe есть или нет?
Добавлено:
Tase4ka
В шапке через vbs
Tase4ka
Попробуйте так:
Код: @Echo Off
setlocal enabledelayedexpansion
Set dt=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
FOR %%a IN (D:\test\*.txt) DO (
set tmpd=%%~ta
set tmpd=!tmpd:~6,4!!tmpd:~3,2!!tmpd:~0,2!
IF !tmpd!==%dt% copy /Y D:\test\%%~na C:\%%~na
)
Pause>nul
Попробуйте так:
Код: @Echo Off
setlocal enabledelayedexpansion
Set dt=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
FOR %%a IN (D:\test\*.txt) DO (
set tmpd=%%~ta
set tmpd=!tmpd:~6,4!!tmpd:~3,2!!tmpd:~0,2!
IF !tmpd!==%dt% copy /Y D:\test\%%~na C:\%%~na
)
Pause>nul
drksrv
попробуй. не уверен
Код: @echo off
cls
echo Protecting srcds from crashes...
title srcds Watchdog
:srcds
echo (%time%) srcds started.
srcds.exe
echo (%time%) WARNING: srcds closed or crashed, restarting....
goto srcds
попробуй. не уверен
Код: @echo off
cls
echo Protecting srcds from crashes...
title srcds Watchdog
:srcds
echo (%time%) srcds started.
srcds.exe
echo (%time%) WARNING: srcds closed or crashed, restarting....
goto srcds
Tase4ka
Цитата:
EQU попробуйте
Цитата:
Пришлось использовать в условии "==", так как на EQL ругается, что нет такой функции
EQU попробуйте
GORA2
Цитата:
Так копирует всё содержимое каталога
Цитата:
Tase4ka
Попробуйте так:
Код:
@Echo Off
setlocal enabledelayedexpansion
Set dt=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
FOR %%a IN (D:\test\*.txt) DO (
set tmpd=%%~ta
set tmpd=!tmpd:~6,4!!tmpd:~3,2!!tmpd:~0,2!
IF !tmpd!==%dt% copy /Y D:\test\%%~na C:\%%~na
)
Pause>nul
Так копирует всё содержимое каталога
Tase4ka
Цитата:
Локаль русская? Что значить "всё содержимое"? И не .txt файлы тоже? И .txt файлы с более старыми датами?
ps исправьте эту строку:
Код: IF !tmpd!==%dt% copy /Y D:\test\%%~nxa C:\%%~nxa
Цитата:
Так копирует всё содержимое каталога
Локаль русская? Что значить "всё содержимое"? И не .txt файлы тоже? И .txt файлы с более старыми датами?
ps исправьте эту строку:
Код: IF !tmpd!==%dt% copy /Y D:\test\%%~nxa C:\%%~nxa
GORA2
УУУУУУРРРРРРРАААААААААА
вот так сработало:
@Echo Off
setlocal enabledelayedexpansion
Set dt=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
FOR %%a IN (W:\*.txt) DO (
set tmpd=%%~ta
set tmpd=!tmpd:~6,4!!tmpd:~3,2!!tmpd:~0,2!
IF !tmpd!==%dt% copy /Y W:\%%~nxa C:\%%~nxa
)
Pause>nul
Спасибо огроменное! Могу теперь с чистой совестью и чувством изполненного долга идти обедать
УУУУУУРРРРРРРАААААААААА
вот так сработало:
@Echo Off
setlocal enabledelayedexpansion
Set dt=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
FOR %%a IN (W:\*.txt) DO (
set tmpd=%%~ta
set tmpd=!tmpd:~6,4!!tmpd:~3,2!!tmpd:~0,2!
IF !tmpd!==%dt% copy /Y W:\%%~nxa C:\%%~nxa
)
Pause>nul
Спасибо огроменное! Могу теперь с чистой совестью и чувством изполненного долга идти обедать
GORA2
Спасибо.
Проблема была в пробелах до и после знака присвоения; "даже самый неправильный код должен выглядеть изящно" (с).
Спасибо.
Проблема была в пробелах до и после знака присвоения; "даже самый неправильный код должен выглядеть изящно" (с).
Цитата:
Пришлось использовать в условии "==", так как на EQL ругается, что нет такой функциичитаем if /? и видим что действительно нет, есть equ
Цитата:
Делаю это по следующему коду на основании прочтенных топиков в форумах, но у меня не работаетэто ж где такой пример был? для >> 15.log в смысле. так делать и бессмысленно и без понимания даже вредно - у тебя вот пробел лишний в переменную влез, засада для if
set tmpd=%~t1 >>15.log
set tmpd=!tmpd:~0,13! >>15.log
Цитата:
IF "!tmpd!" == %DATE% (ну что за... везде в цикле писала !tmpd!, а тут, в том же цикле - %ntmp% для свежеопределенной переменной, и еще хочешь чтоб работало
set ntmp=%~n1
copy /Y D:\test\%ntmp% C:\%ntmp% >>15.log
)
Кстати, а чему равен используемый строчкой выше %1 ? или там второй % потерялся (и в %~t1 - тоже), а счетчик цикла выбран такой специально для запутывания?
в общем, написать ты хотела видимо вот это:
Код: @echo off
setlocal enabledelayedexpansion
for %%i in (W:\*.txt) do (
set tmpd=%%~ti
if "!tmpd:~0,10!" equ "%date%" echo %%i & copy /y "%%~fi" c:\kuda_nado\ 1>nul
)
Привет всем, подскажите скрипт или батник для несложной операции, а именно:
Есть обновляемая каждый день папка (назовём её "X") и требуется батник, который будет делать резервную копию (backup) всех файлов и папок из папки "X" в условную папку "Y".
Как это можно реализовать ?
Есть обновляемая каждый день папка (назовём её "X") и требуется батник, который будет делать резервную копию (backup) всех файлов и папок из папки "X" в условную папку "Y".
Как это можно реализовать ?
wolf0425
Цитата:
ах, если бы...
if /?
Изменение команды IF при включении расширенной обработки команд:
IF [/I] строка1 оператор_сравнения строка2 команда
IF CMDEXTVERSION число команда
IF DEFINED переменная команда
где оператор_сравнения принимает следующие значения:
EQL - равно
NEQ - не равно
LSS - меньше
LEQ - меньше или равно
GTR - больше
GEQ - больше или равно
а ключ /I, если он указан, задает сравнение текстовых строк без учета
регистра. Ключ /I можно также использовать и в форме строка1==строка2
команды IF. Сравнения проводятся по общему типу данных, так что если
строки 1 и 2 содержат только цифры, то обе строки преобразуются в числа,
после чего выполняется сравнение чисел.
Цитата:
Цитата:Пришлось использовать в условии "==", так как на EQL ругается, что нет такой функции
читаем if /? и видим что действительно нет, есть equ
ах, если бы...
if /?
Изменение команды IF при включении расширенной обработки команд:
IF [/I] строка1 оператор_сравнения строка2 команда
IF CMDEXTVERSION число команда
IF DEFINED переменная команда
где оператор_сравнения принимает следующие значения:
EQL - равно
NEQ - не равно
LSS - меньше
LEQ - меньше или равно
GTR - больше
GEQ - больше или равно
а ключ /I, если он указан, задает сравнение текстовых строк без учета
регистра. Ключ /I можно также использовать и в форме строка1==строка2
команды IF. Сравнения проводятся по общему типу данных, так что если
строки 1 и 2 содержат только цифры, то обе строки преобразуются в числа,
после чего выполняется сравнение чисел.
mugil_cephalus
еси ты такой вумный, то не значит никто не умный, я делала запрос справки поэтому и пыталась использовать согласно справки EQL!
Но работает почему-то EQU...вот!
еси ты такой вумный, то не значит никто не умный, я делала запрос справки поэтому и пыталась использовать согласно справки EQL!
Но работает почему-то EQU...вот!
не спорьте правильно
EQU
EQL это ошибка
EQU
EQL это ошибка
Tase4ka
1) та реплика ( http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1820#13 ) адресована была wolf0425
2) я сам пострадал с опечаткой справки
в какой-то команде (помимо if) я тоже натыкался на опечатку в операторах сравнения - с тех пор "ученый"
1) та реплика ( http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1820#13 ) адресована была wolf0425
2) я сам пострадал с опечаткой справки
в какой-то команде (помимо if) я тоже натыкался на опечатку в операторах сравнения - с тех пор "ученый"
mugil_cephalus
Цитата:
Код: where compare-op may be one of:
EQU - equal
NEQ - not equal
LSS - less than
LEQ - less than or equal
GTR - greater than
GEQ - greater than or equal
Цитата:
ах, если бы...Это что у вас за ОС?
if /?
где оператор_сравнения принимает следующие значения:
EQL - равно
Код: where compare-op may be one of:
EQU - equal
NEQ - not equal
LSS - less than
LEQ - less than or equal
GTR - greater than
GEQ - greater than or equal
вот еще опечатка в ntcmds.chm
enableextension
Включает расширения командного процессора до появления соответствующей команды endlocal, вне зависимости от состояния расширений командного процессора перед командой setlocal.
disableextensions
Выключает расширения командного процессора до появления соответствующей команды endlocal, вне зависимости от состояния расширений командного процессора перед командой setlocal.
у enableextension - отсутствует "s"
вот еще
это из станека
Добавлено:
wolf0425
Цитата:
я сам бы хотел знать того переводчика
enableextension
Включает расширения командного процессора до появления соответствующей команды endlocal, вне зависимости от состояния расширений командного процессора перед командой setlocal.
disableextensions
Выключает расширения командного процессора до появления соответствующей команды endlocal, вне зависимости от состояния расширений командного процессора перед командой setlocal.
у enableextension - отсутствует "s"
вот еще
это из станека
Добавлено:
wolf0425
Цитата:
Это что у вас за ОС?
я сам бы хотел знать того переводчика
Код:
:begin
Set/p Oper= Ввод:
If %Oper%==1 goto 1
If %Oper%==2 goto 2
Как записать
If %Oper%==(кроме 1 или 2) goto begin ?
If /I %Oper% NEQ 1
If /I %Oper% NEQ 2
не сработало.
Спасибо.
:begin
Set/p Oper= Ввод:
If %Oper%==1 goto 1
If %Oper%==2 goto 2
Как записать
If %Oper%==(кроме 1 или 2) goto begin ?
If /I %Oper% NEQ 1
If /I %Oper% NEQ 2
не сработало.
Спасибо.
Цитата:
Как записать
If %Oper%==(кроме 1 или 2) goto begin ?
Сразу определи переменную Oper на случай, если будет "пустой" ввод (просто Enter):
Код:
@echo off
setlocal
set "Oper=0"
:begin
Set/p Oper= Ввод:
If %Oper%==1 goto 1
If %Oper%==2 goto 2
goto:begin
:1
:2
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
Предыдущая тема: во вкладке автозагрузка
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.