|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] как удалить 1ю строку и склеить строки 3+4, 6+7, 9+10 |
|
CMD/BAT - [решено] как удалить 1ю строку и склеить строки 3+4, 6+7, 9+10
|
Старожил Сообщения: 267 |
есть куча папок с русскими буквами в названии и подкаталогами
C:\1\001 + подкаталоги C:\1\002 + подкаталоги C:\1\003 + подкаталоги ... и в корне каждой папки есть один файл с названием 1.ini C:\1\001\1.ini C:\1\002\1.ini C:\1\003\1.ini ... как запустив BAT из C:\1 удалить у каждого 1.ini строки под номерами 1 и 2,5,8,11,14... (т.е. 1 и 2+3+3+3+3+3+3+...) 1 -> 2 -> 3 -> 3 4 -> 4 5 -> 6 -> 6 ... а еще лучше как их сразу удалить и переименовать, чтобы получился пронумерованный список строк: 1. строка 3 + точка + пробел + строка 4 2. строка 6 + точка + пробел + строка 7 3. строка 9 + точка + пробел + строка 10 .... N. строка (N*3) + точка + пробел + строка (N*3+1) а потом запустив второй BAT склеить все 1.ini по порядку C:\1\001\1.ini + C:\1\002\1.ini + C:\1\003\1.ini +... -> all.ini |
|
Отправлено: 10:21, 22-05-2010 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать shadowbat, типа такого?
@Echo Off Set INI=1.ini Set DST=all.ini If Exist "%DST%" DEL /F/Q "%DST%" For /F "Delims=" %%a In ('DIR /S/B/A-D %INI%') Do ( For /F "Tokens=1* Delims=:" %%i In ('FindStr /ERNC:"$" "%%a"') Do ( Call :TestNum %%i&& <Nul Set /P $X="%%j. ">>"%DST%" If Defined $F <Nul Set /P $X="%%j">>"%DST%"& Echo.>>"%DST%") Echo.>>"%DST%") Exit :TestNum Set /A $N=%~1-(%~1+1)/3*3+1 If %~1 EQU 1 Set $F=& Exit /B 2 If %$N% EQU 2 Set $F=T&Exit /B 1 If %$N% EQU 1 Set $F=& Exit /B 0 Set $F=& Exit /B 2 |
Отправлено: 13:42, 22-05-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать amel27
![]() а как добавить, чтобы при создании строк добавлялся порядковый номер, и с каждого нового 1.ini он начинался с 001 |
Последний раз редактировалось shadowbat, 22-05-2010 в 14:22. Отправлено: 14:01, 22-05-2010 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать shadowbat, точно, пропустил, тогда попробуй так:
@Echo Off Set INI=1.ini Set DST=all.ini If Exist "%DST%" DEL /F/Q "%DST%" For /F "Delims=" %%a In ('DIR /S/B/A-D %INI%') Do (Set $N=1 For /F "Tokens=1* Delims=:" %%i In ('FindStr /ERNC:"$" "%%a"') Do ( Call :TestN1 %%i&& <Nul Set /P $X="%%j. ">>"%DST%" Call :TestN2 %%i&&(<Nul Set /P $X="%%j">>"%DST%"&Echo.>>"%DST%")) Echo.>>"%DST%") Exit :TestN1 Set /A $I=%~1-(%~1+1)/3*3+1 If %$I% NEQ 1 Exit /B 1 <Nul Set /P $X="%$N%.">>"%DST%" Set /A $N+=1& Exit /B 0 :TestN2 Set /A $I=%~1-(%~1+1)/3*3+1 If %~1 EQU 1 Exit /B 1 If %$I% NEQ 2 Exit /B 1 Exit /B 0 |
Отправлено: 14:37, 22-05-2010 | #4 |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать отлично делает!
как бы теперь поменять с 1, 2, 3 на 001 002 003 или это нереализуемо? тут видимо через условие либо функцию нужно реализовывать? или через 3 функции? для номеров 0-9 10-99 100-999 пока что приспособился: BAT + программа Renamer с прибавлением 0 и 00 перед началом нужных файлов amel27, благодарю! ![]() |
|
Последний раз редактировалось shadowbat, 22-05-2010 в 16:54. Отправлено: 14:46, 22-05-2010 | #5 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Отправлено: 16:50, 22-05-2010 | #6 |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать красота! amel27, отличная работа!
итоговое решение: @Echo Off Set INI=1.ini Set DST=all.ini If Exist "%DST%" DEL /F/Q "%DST%" For /F "Delims=" %%a In ('DIR /S/B/A-D %INI%') Do (Set $N=1 For /F "Tokens=1* Delims=:" %%i In ('FindStr /ERNC:"$" "%%a"') Do ( Call :TestN1 %%i&& <Nul Set /P $X="%%j. ">>"%DST%" Call :TestN2 %%i&&(<Nul Set /P $X="%%j">>"%DST%"&Echo.>>"%DST%")) Echo.>>"%DST%") Exit :TestN1 Set /A $I=%~1-(%~1+1)/3*3+1 If %$I% NEQ 1 Exit /B 1 Set $S=00%$N% <Nul Set /P $X="%$S:~-3%.">>"%DST%" Set /A $N+=1& Exit /B 0 :TestN2 Set /A $I=%~1-(%~1+1)/3*3+1 If %~1 EQU 1 Exit /B 1 If %$I% NEQ 2 Exit /B 1 Exit /B 0 |
Отправлено: 16:59, 22-05-2010 | #7 |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать |
Отправлено: 21:04, 23-05-2010 | #8 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать shadowbat, не уверен, что правильно понял:
@Echo Off Set INI=1.ini Set DST=all.ini If Exist "%DST%" DEL /F/Q "%DST%" For /F "Tokens=1* Delims=[]" %%a In ('DIR /S/B/A-D %INI%^|Find /N /V ""') Do ( Set $N=1& Echo %%a>>"%DST%" For /F "Tokens=1* Delims=:" %%i In ('FindStr /ERNC:"$" "%%b"') Do ( Call :TestN1 %%i&& <Nul Set /P $X="%%j. ">>"%DST%" Call :TestN2 %%i&&(<Nul Set /P $X="%%j">>"%DST%"&Echo.>>"%DST%")) Echo.>>"%DST%") Exit :TestN1 Set /A $I=%~1-(%~1+1)/3*3+1 If %$I% NEQ 1 Exit /B 1 Set $S=00%$N% <Nul Set /P $X="%$S:~-3%.">>"%DST%" Set /A $N+=1& Exit /B 0 :TestN2 Set /A $I=%~1-(%~1+1)/3*3+1 If %~1 EQU 1 Exit /B 1 If %$I% NEQ 2 Exit /B 1 Exit /B 0 |
Отправлено: 03:46, 24-05-2010 | #9 |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать amel27, зато я уверен!!
![]() |
Отправлено: 08:16, 24-05-2010 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] как в конце строки удалить пробел | akrav | Скриптовые языки администрирования Windows | 11 | 08-10-2024 00:29 | |
Разное - [решено] Как удалить все профили почты outlook из командной строки? (CMD)(vbs) | merdzd | Microsoft Office (Word, Excel, Outlook и т.д.) | 7 | 17-12-2015 07:02 | |
FAQ - как удалить адрес из командной строки в Opera10 и IE8 для Windows7 | Gleban | Сетевые технологии | 0 | 27-02-2010 20:06 | |
[решено] Как удалить строки в текстовом файле при отсутсвии файла в опрелеленном месте? | Pozia | AutoIt | 23 | 14-05-2009 21:41 | |
Интерфейс - [решено] Как удалить ненужные ссылки из адресной строки Internet Explorer? | muslim | Microsoft Windows 2000/XP | 2 | 15-01-2008 13:54 |
|