|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - удаление строки из файла |
|
CMD/BAT - удаление строки из файла
|
Пользователь Сообщения: 144 |
Добрый день!
Помогите, пж-ста, добавить в скрипт код удаление строки из файла. Есть файл с именами компьютеров. Нужно, чтобы скрипт работал до тех пор, пока все хосты не будут обработаны. Вот код: |
|
Отправлено: 14:44, 01-11-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:43, 01-11-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Предположим в файле 3000 хостов, нужен файл, где все "ОК" и файл, со списком оставшихся "проблемных" хостов.
Вызывается функция :FUNC, отрабатывается весь список, записывает в лог обработанные хосты, затем идет возврат к :Start и по новой, но зачем проходить весь список? Нужно только оставшуюся часть. И удобно смотреть сколько осталось обработать. |
Последний раз редактировалось HFShak, 01-11-2013 в 16:46. Отправлено: 16:40, 01-11-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать HFShak, начнём с того. что в командном языке пакетных файлов отсутствует такая функция, как «удаление строки» (edlin в расчёт не берём). Удаление строк из файла, участвующего в разборе (без его предварительного чтения целиком и передачи по конвейеру) — это вообще интересная штука с не всегда предсказуемым поведением.
Хотите список «проблемных» — делайте их вывод в другой файл, наподобие: Хотите «смотреть сколько осталось» — делайте изначально подсчёт строк в файле, расчёты по мере обработки, включайте результаты подсчётов в вывод на консоль. И только-то. |
Отправлено: 17:03, 01-11-2013 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 01:16, 03-11-2013 | #5 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать Я бы сделал так:
copy nul "%temp%\hostnames.tmp" for /F "usebackq delims=" %%s in ("%~dp0hostnames.txt") do ( if not %1==%%s echo %%s>>"%temp%\hostnames.tmp" ) move "%temp%\hostnames.tmp" "%~dp0hostnames.txt" Сейчас перечитал предыдущие посты и понял, что неверно сформулировано задание: "...тут нужно добавить код удаления хоста %1 из файла hostnames.txt..." Я и добавил. А надо было здесь сделать только формирование нового файла, с тем, чтобы после цикла им заменить старый: @echo off :Start copy nul "%temp%\hostnames.tmp" for /F "usebackq tokens=*" %%f in (%~dp0hostnames.txt) do CALL :FUNC %%~f move "%temp%\hostnames.tmp" "%~dp0hostnames.txt" goto :Start :FUNC if exist \\%1\C$\Windows ( md \\%1\C$\TEMP echo %1 done >> %TEMP%\log.txt for /F "usebackq delims=" %%s in ("%~dp0hostnames.txt") do ( if not %1==%%s echo %%s>>"%temp%\hostnames.tmp" ) ) else ( goto :eof ) |
Последний раз редактировалось Гуллипут, 05-11-2013 в 21:24. Отправлено: 21:14, 05-11-2013 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Удаление принтеров из командной строки | denzill | Microsoft Windows 2000/XP | 45 | 24-08-2021 23:31 | |
CMD/BAT - [решено] Имя файла из строки копируемого файла. | Seryoga204 | Скриптовые языки администрирования Windows | 20 | 16-03-2011 21:15 | |
удаление строки Windows из загрузчика Linux | Baiker | Хочу все знать | 7 | 04-01-2011 04:36 | |
CMD/BAT - [решено] Чтение строки из файла в переменную | Николя | Скриптовые языки администрирования Windows | 42 | 17-01-2010 19:42 | |
[решено] Удаление строки из файла | gregaz | AutoIt | 2 | 16-07-2009 18:46 |
|