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

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

Автор: FGHGJGJSD22
Дата сообщения: 02.12.2009 19:57
01MDM
чет у меня опять не идет...файл 24_H.csv обнуляется - в нем все пропадает...
пробелы с кода убрал , запускаю как батник(расш кмд поставил)
в чем проблема может быть ?
Автор: GreG
Дата сообщения: 02.12.2009 21:50
01MDM

Цитата:
Да лучше - проще забрать и перезаписать новым:

а нельзя так сделать чтоб новое значение вставлялось в конец текста другого файла например 2.txt или чтоб в файле 1.txt находилось не только число которое будет увеличиваться а еще и текст который не должен изменяться.
Автор: 01MDM
Дата сообщения: 02.12.2009 22:49
FGHGJGJSD22

Цитата:
в чем проблема может быть ?

Замени %l% на %line% - думал одно, а писал другое.
И выполни в консоли echo %path% - прописан там путь к GnuWin32\bin? Если нет добавь строчку из предыдущего батника.


Добавлено:
GreG
Приведи пример, как файл должен выглядеть.
Автор: FGHGJGJSD22
Дата сообщения: 02.12.2009 23:11
не смог сообщение удалить(щас пропишу в коде срочку к GnuWin32\bin)
Автор: GreG
Дата сообщения: 02.12.2009 23:23
01MDM

Цитата:
Приведи пример, как файл должен выглядеть.

л/с №7987988098 текущее значение 2222 (это то число которое должно меняться)
Автор: FGHGJGJSD22
Дата сообщения: 02.12.2009 23:39
01MDM
Прописал строчку - все пошло !
код такой теперь
-------
@echo off
setlocal
pushd "D:\1_PR"
set "PATH=%PATH%;C:\Program Files\GnuWin32\bin"
for /f "tokens=1 delims=:" %%i in ('findstr /n "\<2:00:00" 24_H.csv') do set /a "line=%%i+1"
1>1.tmp sed "%line%,$d" 24_H.csv
move 1.tmp 24_H.csv
popd
-------------
Но надо чтоб при следующем запуске батника если последняя срока имеет
указанное время ( 2:00:00 ) она игнорировалась !- и обрезка продолжилась !-
тоесть до следующей строки с указанным временем 2:00:00
тоесть запустили батник - он обрезал - стало допустим
01.12.2009 2:00:00;109 - то есть 1 число 12 мес 2009г 2:00:00
сразу запускаем батник и он уже эту строчку игнорирует! и получится
должно
30.11.2009 2:00:00;88
тоесть минус сутки...
что то можно сделать ?
первый батник для удаления 1 строки использывать не желательно !
потому как время увеличится обработки ( файлы могут быть довольно большие по обьему)
Автор: AnGo
Дата сообщения: 03.12.2009 04:44
01MDM

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


YoungBatman

Цитата:

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


Ты всё делаешь правильно. А 01MDM нужно разблокировать файл в свойствах файла. Это типо защита такая от M$, что бы домохозяйки случайно не навредили своему компу...
Автор: 01MDM
Дата сообщения: 03.12.2009 16:35
AnGo
Почему другие chm не требуют разблокировки?

GreG

Цитата:
л/с №7987988098 текущее значение 2222 (это то число которое должно меняться)


Код:
@echo off
setlocal enabledelayedexpansion

for /l %%i in (150,1,200) do set "num_!random!=%%i"
for /f "tokens=2 delims==" %%i in ('set num_') do set "rand_num=%%i"

:: файл 1.txt с предыдущим значением
for /f "tokens=5" %%i in ('type 1.txt') do set /a "num=%%i+rand_num"

:: Перезаписываем 1.txt
1>nul chcp 1251
1>1.txt echo л/с №7987988098 текущее значение %num%


echo вставляем %num% в "body" письма
Автор: FGHGJGJSD22
Дата сообщения: 03.12.2009 17:28
01MDM
Большое спасибо ! - все пошло ! (только заменил %l% на %line%)
Автор: MoBiRo
Дата сообщения: 04.12.2009 01:58
Написал скриптик для создания бэкапов данных на сервере, но почему-то приходят пустые файлы по 0 байт. Я сначала думал, что проблема в пути т.к. у юзеров могут быть имена на кириллице (путь я прописал вот так %USERPROFILE%\ђ Ў®зЁ© бв®«\Backup\*.dat), но проблема видимо не в этом, раз на сервере появляются файлы с конкретными именами (появляются все файлы, что нужны), если бы он не воспринимал имя юзера кириллицей, то файлов там естественно не было. Но я всё не могу понять почему они по 0 байту. Тестировал у себя на машине - работает, на соседней машине - тоже работает. На третьей машине он отправляет пустые файлы =( Из-за чего он отправляет их пустыми?

Вот скрипт


Код: @echo off

:first
Ping -n 1 someserver.ru
If ErrorLevel 1 Goto first

cd "%USERPROFILE%\ђ Ў®зЁ© бв®«\Backup\"

path=%DATE:~6,4%%DATE:~2,4%%DATE:~0,2%

echo somelogin@someserver.ru>>ftp.txt
echo somepassword>>ftp.txt
echo mkdir %path%>>ftp.txt
echo cd %path%>>ftp.txt
echo mput *.dat>>ftp.txt
echo quit>>ftp.txt

ftp -s:ftp.txt -i FTP.someserver.ru

del ftp.txt
exit
Автор: 01MDM
Дата сообщения: 04.12.2009 08:20
MoBiRo

Цитата:
path=%DATE:~6,4%%DATE:~2,4%%DATE:~0,2%


set path=...

И лучше выбрать другое название для переменной.
Автор: den4363
Дата сообщения: 04.12.2009 22:46
Помогите пожалуйста.
Есть папка Project в ней 3 папки с подпапками и bat-ник, необходимо чтоб bat-ник архивирывал эти папки, припустим в c:\Temp\project, тудаже перемещал себя, а папку Project удалял. Помогите пожалуйста реализовать.
Автор: MoBiRo
Дата сообщения: 05.12.2009 08:24

Цитата:
set path=...

Да в общем дело не в этом, это я сейчас только добавил. Вот скажите почему файлы, которые весят где-то по 1мб, бэкапятся на сервер пустыми? Из-за чего это может произойти?
Автор: FGHGJGJSD22
Дата сообщения: 05.12.2009 11:40
01MDM
Приветствую , Хороший человек.
Два вопроса.
1.Забыл спросить а как мне в моем коде сделать наоборот,чтоб не с конца а с начала строки удалялись?
этот код удаляет с конца(минус одна строка и минус до строки со временем 2 00 00)
@echo off
setlocal
pushd "D:\1_PR"
set "PATH=%PATH%;C:\Program Files\GnuWin32\bin"
1>1.tmp sed "$d" 24_H.csv
move 1.tmp 24_H.csv
for /f "tokens=1 delims=:" %%i in ('findstr /n "\<2:00:00" 24_H.csv') do set /a "line=%%i+1"
1>1.tmp sed "%line%,$d" 24_H.csv
move 1.tmp 24_H.csv
popd
---------
как сделать наоборот но чтоб с начала файла удалялось 2 строки потом до времени ?

2.Что прописать в конце кода батника - чтоб после его выполнения он запускал себя
снова - то количество раз которое укажешь.Тоесть ставится цифра 200 - он будет запускать сам себя после первого запуска его руками 200 раз...
или сделать отдельный батник чтоб он запускал тот который укажешь - но смотрел чтоб запуск происходил после выполнения всего кода батника....
Автор: AnGo
Дата сообщения: 05.12.2009 14:57
01MDM

Цитата:
Почему другие chm не требуют разблокировки?

Да кто-ж его знает.

А более серьезно см. сюда:
http://support.microsoft.com/kb/892675
http://support.microsoft.com/kb/896054
Автор: zumicator
Дата сообщения: 05.12.2009 17:40
Делаю первые шаги в батанике. Хочу получить для дальнейшей обработки дату последнего обращения к файлу. Вот что получилось:
for /f "skip=3 tokens=1" %%i in (' dir df* /t:a ') do (
set var=%%i
)
echo %var%

df - то мой файл

вывод команды dir:
Том в устройстве C имеет метку Data
Серийный номер тома: CACC-994E

Содержимое папки C:\xxx\xxx...


05.12.2009 19:46 131 df.bat
1 файлов 131 байт
0 папок 20 798 472 192 байт свободно

первые три строки пропустил, а что делать 2 последующими? В итоге то var = 0 у меня...

И ещё почему то ключ /t:a в команде dir выдаёт туже дату что и /t:c , то есть создания файла.

Подскажите где косяк? А может есть более простые решения?
Автор: BakLAN
Дата сообщения: 06.12.2009 01:15
Поясните, пожалуйста. Нужно импортировать данные в реестр. Создаk cmd-файл, записал в него следующее:

Код: reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\CancelAutoplay\Files" /v "*.*" /d "" /f
Автор: Demon L
Дата сообщения: 06.12.2009 15:49
Помогите, пожалуйста....
Как решить такую задачу:
есть папка "IN" в ней папки вида "01 Январь" "02 Февраль" итд. В папку "IN" постоянно падают файлики *.msg. Нужно раскладывать файлики по дате создания... но так чтоб не учитывать год (для того чтоб получилось универсально)
То есть нужно чтоб файлы которые появились, скажем в январе, оказались в папке "01 Январь" и при этом имя папки куда должен в итоге попасть файл должно определятся только по первым двум цифрам в данном случае "01" и не обращать внимания на остальное название папки (потому как вместо "Январь" там может быть все чт угодно)...
Автор: 01MDM
Дата сообщения: 07.12.2009 10:06
Demon L

Код:
@echo off
setlocal

for %%i in (*.msg) do (
    for /f "tokens=2 delims=." %%j in ("%%~ti") do (
        2>nul md %%j
        move "%%i" %%j
    )
)
Автор: MothROM2
Дата сообщения: 07.12.2009 10:14
Всем привет, помогите с задачкой:
Скрипт, должен заблокировать всех локальных пользователей на ПК, кроме локального админа, а ему самому сменить пароль.

Проясню ситуацию, все компьютеры находятся в домене, пользователи тоже доменные, локальных пользователей быть не должно, пароль у локального админа во избежание должен меняться довольно часто.

Скрипт будет выполняться в групповой логон-политике. Я вообщем представляю как сделать с помощью внешних утилит эту процедуру, но пока не нашел как скрыть пароль в скрипте.

Если у кого есть наработки, поделитесь плз.
Автор: FGHGJGJSD22
Дата сообщения: 07.12.2009 19:30
как сделать чтобы батник запускал сам себя - определенное количество раз ? допусти ставишь 200 цыфру - он выполняет весь код и птом опять начинает выполнять код с начала (и так 200 раз).
Автор: 01MDM
Дата сообщения: 07.12.2009 20:21
FGHGJGJSD22

Код:
@echo off
setlocal

set /a "cnt=%1-1"

:: Здесь тело батника
echo %cnt%
::

if %cnt% leq 0 (goto:eof) else (cmd /b /c %0 %cnt%)
Автор: FGHGJGJSD22
Дата сообщения: 07.12.2009 20:59
01MDM

никак не идет... и про аргумент не понял (сори за тупость)

вот пример батника выводит в окне слово - Проверка
--------------------------
Chcp 1251
msg * Проверка
cls
--------------------------
как допустим сделать чтоб этот батник запускался 5 раз к примеру
Автор: 01MDM
Дата сообщения: 07.12.2009 21:33
FGHGJGJSD22
Запускаешь:

Код:
C:\> this.bat 5
Автор: FGHGJGJSD22
Дата сообщения: 07.12.2009 22:16
01MDM
@echo off
setlocal

set /a "cnt=%1-1"

start notepad

if %cnt% leq 0 (goto:eof) else (cmd /b /c %0 %cnt%)

сохранил это код как this.bat(блокнот он запускает все нормально) положил на диск С
ввожу в ком строке - C:\> this.bat 5 или start C:\> this.bat 5 - неработает
-------------------------
start C:\> this.bat 5 или C:\> this.bat 5

@echo off
setlocal

set /a "cnt=%1-1"

start notepad

if %cnt% leq 0 (goto:eof) else (cmd /b /c %0 %cnt%)

сограняю и запускаю как батник - опять не идет....
может мне куда то надо вот эту строку вставить ?
set "PATH=%PATH%;C:\Program Files\GnuWin32\bin"
Автор: scorpiorxx
Дата сообщения: 08.12.2009 12:41
Привет всем! Кому не жалка помогите пожалуйста! Устал делать все руками!
Вообщем есть каталог, в каталоге много подкаталогов, в которых файлы *.xls, нада скинуть самый большой файл на сетевой диск Н, и переименовать его в название каталога и дату создания файла, а забыл дописать чтоб в этом подкаталоге удалить все файлы после Хелп....а там таких файликов штук 300-400

Например: garant_081209.xls Спасибо большое заранее!!
Автор: CTACKo
Дата сообщения: 09.12.2009 02:48
Подскажите, кто знает, как с помощью |more можно нажать ентер?
Когда-то очень давно в печатной периодике видел пример командника, но не помню и найти нигде не могу. Суть в том что в команднике запускается некая программа и она дальше ничего не делает пока ей тупо не нажмешь ентер. И был показан пример командной строки для такого случая с использованием |more в котором ентер какбы "сам нажимался" благодаря некоей хитрости работы more.
ЗЫ. Нашел только что echo|more генерирует EOL т.е. какбы нажатие Ентер. Но как это использовать - не пойму...

спасибо
Автор: FGHGJGJSD22
Дата сообщения: 09.12.2009 10:22
CTACKo

nircmd.exe sendkey 13 press

Должна стоять(скачать и поставить) утилита nircmd
13 - это код клавиши энтер(можно и другие клавиши нажимать - просто ставишь соответств код клавиши)

01MDM

Обьясни пожалуйста на пальцах по моему вопросу - не как не идет...туплю по черному...
Не как 5 раз не хочет запускаться блокнот....
Автор: Maqentaer
Дата сообщения: 09.12.2009 11:17
CTACKo
если консольная программа, то так должно работать:

Код: echo|program.exe
Автор: CTACKo
Дата сообщения: 09.12.2009 12:16
FGHGJGJSD22
спасибо! помогло

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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