Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd)

Автор: 01MDM
Дата сообщения: 18.11.2009 16:07
Slonevg
Внутренний путь к 1.(cmd|bat) на флешке известен? Значит:

Код:
call "%~d0\Путь\К\1\1.cmd"
Автор: Slonevg
Дата сообщения: 18.11.2009 17:18
01MDM
Путь к самой флешки неизвестен, на разных компах он будет разный

Добавлено:
Или может все правильно загвоздка дальше?

@echo off
xcopy *.* "C:\1" /Y /i
regedit /s 1.reg
exit

это 2 батник, который по идее должен скопировать все файлы которые есть рядом создав папку 1 на диске C и добавить данные в реестр.


@ECHO off
call "..\1\1.bat"
popd

Это батник Ваш. Папка 1 создаётся, но туда копируется только ваш батник и все. Что я не так сделал?

Добавлено:
Или напишите как скопировать папку например 1 со всем содержимым в диск C и уже оттуда запустить батник
Автор: 01MDM
Дата сообщения: 18.11.2009 19:45
Slonevg

Цитата:
Путь к самой флешки неизвестен, на разных компах он будет разный

Батник запускается с флешки? Я написал как это сделать без явного указания буквы диска.

Цитата:
@ECHO off
call "..\1\1.bat"
popd

Это батник Ваш.

Без `pushd` не мой.

1.cmd и 2.cmd находятся на флешке
1.cmd - запускает 2.cmd из папки "1":

Код:
@echo off
call "%~d0\1\2.cmd"
Автор: Serius1988
Дата сообщения: 19.11.2009 15:10
Добрый день.
В общем получилась такая ситуация :
1)мне нужно с папки 1 скопировать файлы с расширением *.txt на 2 ФТП сервера. причем на втором сервере нужно выставить файлам которые я копировал атрибуты 777 . (на обеих серверах существует огромное количество тхт файлов и если файл копируется с такм же именем которое там есть просто заменить файл)
2)все что происходило в cmd вывести в лог файл.
(в лог файл могу вывести но при следуещем выполнении старый лог затирается и создается новый а это не есть ГУД (((( )


вот что на данный момент имеется

Код:
ftp -s:d:\11\1\1.txt torg.zxq.net
ftp -s:d:\11\1\1.txt torg.zxq.net




set OUTPUT=last_log.txt

if "%STDOUT_REDIRECTED%" == "" (
set STDOUT_REDIRECTED=yes
cmd.exe /c %0 %* >%OUTPUT%
exit /b %ERRORLEVEL%
)
Автор: L0unEr
Дата сообщения: 20.11.2009 02:54
Я конечно извиняюсь за вопрос, ответ наверняка был на одной из 300 страниц. но осилить это не могу.
Вроде бы и простая задача, а решить не могу.
Есть ехе. нужен его рестарт к примеру каждые 30 минут. Наиболее интересен компактный вариант. какой-либо батник. планировщиков задач не предлогать. вот =)
Автор: Slonevg
Дата сообщения: 20.11.2009 19:14
01MDM
Спасибо большое все заработало, правда 2 батник не понадобился (как Вы и говорили), вы мне очень помогли
Автор: vladjan7
Дата сообщения: 24.11.2009 17:01
Подскажите пожалуйста, как в батнике произвести проверку, файл нулевой длинны или нет.

Может утилитка какая есть готовая.
Автор: Slonevg
Дата сообщения: 25.11.2009 07:31
Подскажите батник для смены IP, в режиме роутер. При переподключении IP меняется.
Автор: 01MDM
Дата сообщения: 25.11.2009 10:10
vladjan7

Цитата:
Подскажите пожалуйста, как в батнике произвести проверку, файл нулевой длинны или нет.


Код:
@echo off
for %%i in (file.ext) do (
if %%~zi==0 (echo This file is zero length) else (echo %%~zi)
)
Автор: vladjan7
Дата сообщения: 25.11.2009 10:17
Большое спасибо, а то уж думал через такой "бред", как сравнение с нулевым файлом решить задачу:

fc.exe 1.txt 2.txt
ECHO %ERRORLEVEL%
Автор: YoungBatman
Дата сообщения: 25.11.2009 11:41
Товарищи, вот скомпилил справочный хтмл, который присоединен к шапке, в более удобный chm-архивчик. Можно прикрепить ссылку в шапку.

Справка по командам Windows
Автор: 01MDM
Дата сообщения: 25.11.2009 13:00
YoungBatman
Все бы хорошо, но:



Автор: dskj
Дата сообщения: 25.11.2009 14:37
Подскажите пожалуйста, пытаюсь сделать батник чтобы удалять по сети папки. Вот что у меня для начала получилось

Код: FOR /F "tokens=1 usebackq" %%i in (listlan.txt) do (dir "%%i\C$\test\" /b | find "test")
Автор: 01MDM
Дата сообщения: 25.11.2009 15:15
dskj
Попробуй так, `del' не понимает сетевых путей (в справке об этом ни гугу) - через сетевой диск, примапенный `pushd':

Код:
@echo off
for /f "tokens=1" %%i in (listlan.txt) do (
pushd "%%i\C$"
del "test\test"
popd
)
Автор: dskj
Дата сообщения: 25.11.2009 23:16
01MDM
Вы меня не поняли, в вашем случае насколько я понел удалит только папку test, но не удалит test1 , test2 , ... testN . Вот для этого в моей строчке прописан find он ищет из всего что выдаст dir ( в моем случае он находил test , test1, test2 и т.д. ) а вот как дальше передать на удаление я не понял.
Автор: 01MDM
Дата сообщения: 26.11.2009 07:31
dskj

Цитата:
Вы меня не поняли, в вашем случае насколько я понел удалит только папку test,

Да, не понял, папки удаляются другой командой:

Код:
@echo off
for /f "tokens=1" %%i in (listlan.txt) do (
pushd "%%i\C$\test"
for /f "tokens=*" %%j in ('dir /b /a:d test*') do rd /s /q "%%j"
popd
)
Автор: YoungBatman
Дата сообщения: 26.11.2009 16:20

Цитата:
YoungBatman
Все бы хорошо, но:



Делал файл на работе, скачал по вышеприведенной ссылке ид дома(думал можа по дороге на файлобменник побился), однако:



Может я что то делаю не так?

Автор: MishaEmS
Дата сообщения: 26.11.2009 17:16
Подскажите пожалуйста!

Есть задача: вытянуть из реестра значение параметра реестра
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Desktop

По умолчанию значение: "%USERPROFILE%\Рабочий стол"

Делаю так:

chcp 1251>NUL
FOR /f "usebackq tokens=1,2* skip=2 eol=;" %%a IN (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) DO SET "Desktop_Path=%%c"

chcp 866>NUL
ECHO %Desktop_Path%
...

Как мне теперь получить полный путь?
(Чтобы вместо %USERPROFILE% подставлялось "C:\Documents and Settings\USER_NAME")


Автор: 01MDM
Дата сообщения: 26.11.2009 17:24
YoungBatman
Пробовал на XP и на 7-ке. Результат одинаков. Может я что-то не так делаю?

Да и не полная она, ничего не сказано про другие утилиты (не встроенные), по сути просто вывод "команда /?", набери в XP:

Код:
hh ntcmds.chm
Автор: MishaEmS
Дата сообщения: 26.11.2009 20:24
01MDM

Цитата:
for /f "tokens=*" %%i in ('echo %desktop%') do echo %%i
:: или
echo | echo %desktop%

Спасибо! Работает!

Подскажите ещё, как удалить пробел в конце строки?
Т.е. проверить, если последний символ пробел, то удаляем его.
Автор: 01MDM
Дата сообщения: 26.11.2009 20:37
MishaEmS

Код:
.....
for /f "tokens=*" %%i in ('echo %desktop%') do set "desktop=%%i"

if "%desktop:~-1%"==" " set "desktop=%desktop:~0,-1%"
echo "%desktop%"
Автор: YoungBatman
Дата сообщения: 27.11.2009 22:02
/Офтопик/
01MDM
Я лишь скомпелировал хтмл-справку из шапки. На новизну не претендую, раз не надо, ну и ладно
Автор: Wilion
Дата сообщения: 28.11.2009 07:29
Помогите пожалуйста. Имеется *.txt файл в котором находится словарь. Как скопировать из него только слова из семи букв в другой *.txt
Автор: 01MDM
Дата сообщения: 28.11.2009 10:08
Wilion
Какой формат файла? Если строчка - слово, то:

Код:
1>2.txt findstr "^.......$" 1.txt
Автор: Wilion
Дата сообщения: 28.11.2009 12:00
Спасибо большое! Всё получилось.
Автор: qosmio5
Дата сообщения: 28.11.2009 18:44
Всем привет.

Помогите написать bat-файл для изменения системного времени Windows на определенный промежуток. То есть, к примеру, перевести часы на 20 минут или 1 час.

Спасибо большое.
Автор: 01MDM
Дата сообщения: 28.11.2009 20:28
qosmio5
Проверь:

Код:
@echo off
setlocal

:: set time=08:09:59
set span=-20

for /f "tokens=1-3 delims=:," %%i in ("%time%") do set /a curtotalsec=((1%%i-100)*3600)+((1%%j-100)*60)+(1%%k-100)

set /a newtotalsec=curtotalsec+span*60

if %newtotalsec% lss 0 set /a newtotalsec+=86400
if %newtotalsec% gtr 86400 set /a newtotalsec-=86400

set /a h=newtotalsec/3600
set /a m=(newtotalsec-h*3600)/60
set /a s=newtotalsec-(h*3600+m*60)

echo %h%:%m%:%s%
:: time %h%:%m%:%s%
Автор: vitrzn
Дата сообщения: 29.11.2009 00:35
(Возможно уже был такой вопрос, но я не нашел ответа ТУТ )

Как с помощью батника можно проверить наличие файлов (по маске) в локальной папке и если есть такие, то запустить Start.exe, а если нету файлов, то завершение батника
Автор: 01MDM
Дата сообщения: 29.11.2009 10:41
vitrzn

Код:
1>nul 2>&1 dir /b /a *.txt && start.exe || goto:eof
Автор: qosmio5
Дата сообщения: 29.11.2009 11:32

01MDM - спасибо большое

Я попробовал сченарий, но у меня часы переводятся на 00:20 вне зависимости от текущего времени.
Может я что-то не так делаю?

Еще раз спасибо.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: SAS.Планета (часть 2)


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