Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: В интерактивном режиме дописывать в файл текст, удалять строки из файла и выводить на экран его содержимое

Второй день изучаю только.

Вот это только сделал: "Разработать командный файл, который бы получал в качестве параметра какое-либо имя, проверял, определена ли такая переменная среды или нет, и выводил соответствующее сообщение."

А для этого мозгов не хватило:
Разработать командный файл, который в интерактивном режиме (командный файл «задает вопросы», а пользователь на них отвечает) мог бы дописывать в файл текст, удалять строки из файла и распечатывать на экране содержимое файла. Удаление строк можно реализовать либо через команду поиска строк в файле, либо команду организации циклов FOR.
Ответ: Благодарю. Оперативно отреагировали. Пойду лучше ликбез проводить. Хоть мне и на раз нужно было поработать с .бат, почитаю книжки. Снимаю шляпу
Вопрос: Чтение строки из файла в переменную

Здравствуйте. Т.к. в написании bat файлов нет опыта, необходима помощь. В определенном каталоге по условию появляется текстовый файл Flag.txt. В txt файле есть только одна строка - это путь до каталога с файлами. (D:\Folder) Нужен .bat файл, который бы проверял наличие файла Flag.txt, читал бы содержимое строки пути и копировал бы все файлы из каталога в определеный каталог.
Ответ: Короче:
Код Windows Batch file
1
@<"C:\Flag.txt" set/p x=&& call copy/y "%%x%%\*" "C:\Dest"
.
Вопрос: Добавление к строкам текстовых файлов номеров этих строк и вывод результата в одноимённые файлы

Есть папка с текстовыми файлами (имена и расширения могут быть любыми кроме .txt). Надо в каждом файле к каждой строке добавить номер строки (начиная с 0) в формате 1; и записать новую строку в новый файл с тем же именем, но расширением .txt
Например:
исходная строка - 16/10/2015;1;3580;
надо получить - 0;16/10/2015;1;3580;
Пока что вымучал только обработку 1 файла, и то криво
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
set file=191001.621
set out=191001.txt
set i=0
for /f "usebackq tokens=*" %%A IN ("%file%") DO (
    echo.%i%;%%A>>"%out%"
    set i+=1
    )
pause
Файл построчно копируется в новый. В начале каждой строки добавляется 0;. Но почему-то всегда 0. Помогите плиз сделать
Ответ: Именно то что нужно!)
Только паузу надо за циклы вынести чтобы не кликать много раз.
Спасибо
Вопрос: Умное переименование массива txt-файлов

Приветствую!
Несколько дней не могу сделать простое для профессионального батникописца и сложное для новичка задание.
Опишу задачу:
Есть у меня на компе более 500 txt файлов, названия у них 1,2,3,4,5 и т.д. Лежат они в одноименных папках (структуру нарисовал, см. вложение). Я хотел бы дать этим файлам названия (папках желательно тоже). Названия файлов нужно брать из самого txt файла, первые 20 символов.

Логика батника должна быть такой:
1. Зашли в папку 1
2. Открыли txt файл 1.
3. Скопировали 20 символов из него.
4. Переименовали этот txt из буфера (20 символов).
5. Вышли из папки.
===============
Повторили процедуру для всех найденных папок.
Ответ:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
setlocal enabledelayedexpansion
>nul chcp 1251      &rem кодировка для кириллицы
set "flag=0"        &rem флаг (более детально ниже)
for /f "delims=" %%t in ('dir /a:d-h-s /b .\') do (
rem в переменную цикла %%t засунули папку
 pushd %%t      &rem перешли в эту папку
 for /f "delims=" %%u in ('dir /a:-d-h-s /b .\*.txt') do (
rem в переменную цикла %%u сунули текстовый файл из папки %%t
  if !flag! == 0 (  &rem если флаг нулёвый выполняем действия
   set/pt=<".\%%u"  &rem берём первую строку текстового файла на который указывает %%u
   ren "%%u" "!t:~0,20!.txt"    &rem переименовываем %%u в 20 символов + расширение .txt
   set/aflag+=1     &rem меняем флаг на единицу, что-бы, строки из других текстовых файлов этой папки, если файлы есть вообще, не использовались в качестве имён.. по сути - это наверное лишнее
  )
 )
 set "flag=0"       &rem обнуляем флаг, т.к. идём в другую папку, за другим файлом и его имя нам нужно
 popd           &rem выходим в ту папку из которой пришли командой pushd
)
Вопрос: Переименовать jpg файлы, взяв имя из первой строки соответствующего одноименного txt файла

Здравствуйте. Есть такие файлы:
kniga-0001.txt
kniga-0001.jpg

kniga-0002.txt
kniga-0002.jpg

kniga-0003.txt
kniga-0003.jpg

jurnal-0001.txt
jurnal-0001.jpg

jurnal-0002.txt
jurnal-0002.jpg

jurnal-0004.txt
jurnal-0004.jpg


и т.д. Т.е. есть пара файлов jpg и txt, в текстовом файле первой строкой идет полное имя jpg файла + комментарий после символа @ (всё в первой строке, комментария может и не быть).
Задача: нужно из каждого txt файла прочитать первую строку до символа @ (которого может и не быть) и переименовать jpg файл в этот текст.
Некоторые полные имена (первая строка до @) могут быть длиннее 255 символов, можно отсекать все, что длиннее, допустим, 150 символов (с запасом на длину пути), добавляя многоточие "...".


Пример 1:
kniga-0001.txt

Ostrov sokrovish. R. Stivenson@prikluchenia_pirati_morskaya_tema

Avtor: R.Stivenson
Data: 1882
Yazik: Russkiy

Нужно переименовать файл "kniga-0001.jpg" в "Ostrov sokrovish. R. Stivenson.jpg".


Пример 2:
kniga-0002.txt

Diktator. S. Snegov

Avtor: Sergei Snegov
Zhanr: Fantastika

Нужно переименовать файл "kniga-0002.jpg" в "Diktator. S. Snegov.jpg".

Заранее спасибо!
Ответ: userok1,
ну приведенный код понятен, но ...
а, если вдруг (а почему бы и нет, тем более никто не контролирует, а выполнение производится левым несведущим юзером) строка будет иметь вид:
Ostrov sokrovish?,ч:1/2<том3|14> & еще * поклон = ". R. Stivenson!!!"^@prikluchenia_pirati_morskaya_tema
файл будет такому имени.
Вопрос: Как скопировать часть текста txt-файла в виде списка событий c условием - текущая дата? - BAT

Здравствуйте, уважаемые форумчане! Очень надеюсь на Вашу профессиональную помощь в следующей задаче.

Есть txt-файл "массив данных" в виде списка событий, привязанных к дате события:
"...
26/08/2016;12:43:25; Событие n;
26/08/2016;13:15:05; Событие n+1;
27/08/2016;09:16:28; Событие n+2;
27/08/2016;10:42:09; Событие n+3;
27/08/2016;11:43:26; Событие n+4;
29/08/2016;09:27:35; Событие n+5;"
Как скопировать строки с событиями за текущую дату в другой txt-файл "события за день X"?
Ответ: И при запуске, можно добавить проверку существования файла:
Windows Batch file
1
if exist todayevents.txt (del todayevents.txt)
А лучше наименование файла присвоить переменной и расставить её там, где используется в сценарии это наименование. Так будет правильнее.
Вопрос: Как занести 2ую строку из файла в переменную?

Нужно присвоить переменной %from% значение равное 2ой строке из файла D:\1.txt , только как это сделать...
Ответ: Dragokas, Спасибо большое!
Вопрос: Из TXT-файла скопировать n-ную строку и вставить ее вместо m-ной строки в DOC-файл

Нужно из одного txt файла скопировать n строку и вставить ее вместо m строки в doc файле. Можно ли так сделать?
Ответ: bat не разбирает doc, нужен другой инструмент.
Вопрос: Построить график по данным из txt файла

Здравствуйте.
Есть txt файл с двумя столбцами данных. Задача - построить по этим данным график в экселе (автоматически, а не вбивая вручную )
Подскажите пожалуйста - как это сделать?
Спасибо.
Ответ: Ofdeath, можно просто открыть текстовый файл в Excel: или Ctrl+O - текстовые файлы - вырбать файл - запустится мастер импорта, или прямо из Проводника: правый клик по txt файлу - открыть с помощью - Excel.
Вопрос: Замена символа "!" в txt-файле

Друзья, есть файл txt, полученный после выгрузки из Teradata с помощью SQL Assistant (не знаю, важно или нет).
Файл выгружается в txt в кодировке Win-1251, соответственно кириллица отображается корректно.
Так вот, после выгрузки файл содержит первую строку - пустую, записи начинаются со второй строки.
Для удаления пустой строки использую скрипт:

Код Windows Batch file
1
2
3
4
5
@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* skip=1 delims=" %%a in (abc.txt) do (
echo %%a>> cba.txt)
@echo on
Проблема заключается в том, что при таком удалении кодировка Win-1251, в которой изначально был файл, меняется на UTF8.
Первая строка удаляется, но в строчках, которые до того содержали символ "!" половина информации затерлась (фактически вместо 30 полей остается в строчке 15-18).
Вероятно из-за сбитой кодировки.

Вопрос: как прописать bat-ник таким образом, чтобы из первоначального файла удалить первую строчку и все символы "!" в остальных строках?

Главное, чтобы при этой записи, содержащие символ, не побились. Кодировка, в которой потом получится файл неважна: в дальнейшем все равно прокручиваю файл через перекодировщик.
Ответ: Да, кстати, помогло. Удалил строчку - и файл корректно выгрузился. Спасибо. Скрипт подкорректировал. Думаю, закроем запрос)