Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Как скопировать часть текста 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)
А лучше наименование файла присвоить переменной и расставить её там, где используется в сценарии это наименование. Так будет правильнее.
Вопрос: Построить график по данным из txt файла

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

Здравствуйте, подскажите пожалуйста как мне считать все данные из txt файла в переменную? главное что бы он так же их и выдал с переменной. set /p не катит пробовал ((
Пример:
Привет
Тут
я что-то
напишу

Добавлено через 3 часа 57 минут
вот собственно в чём проблема, есть vbs для отправки почты, только никак не могу понять как отправить сообщение с несколькими строками? допустим 5-6 строк.
решил реализовать передачу теста с помощью bat.

Код Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Option Explicit
 
'Содание объекта CDO
Dim objmes
Set objmes=CreateObject("CDO.Message")
 
'От кого и кому
Dim from
Dim whom
from="email1@gmail.com" 'адрес отправителя
whom="email2@mail.ru"   'адрес получателя
 
'Тема и текст сообщения
Dim theme
Dim text
theme="subj"
text="sended!"
 
'Конфигурация
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2    
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = from
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "****"
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
 
'Заполнение письма
objmes.From=from
objmes.To=whom
objmes.Subject=theme
objmes.TextBody=text
 
'Обновление данных и отправка письма
objmes.Configuration.Fields.Update
objmes.Send
Ответ: Спасибо,думаю это то что нужно =)
Вопрос: Брать рандомное слово из txt файла

Здравствуйте, помогите) есть такой скрипт:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
(
for %%i in (
 
"Текст: %random%"
 
) do (
 set string=%%~i
 for /f "delims=" %%j in ('
  call echo."%%string:$="%%
 ') do (
  echo.%%~j
  )
 )
)>"\Install\1.txt"
exit /b
Создает файл 1.txt с обычным рандом числом.
Но мне нужно что бы рандом брался из txt файла который я заполню своими отдельными словами, которая будет каждая с новой строчки.
Ответ:

Не по теме:

Сообщение от volodin661
подсистема Unix-shell присутствовала в ветке Windows NT всегда
Ну, речь шла о bash и Linux, а его таки внедрили только в десятке...
Сообщение от volodin661
вплоть до Windows 7.
Если не ошибаюсь, то корпоративка и максимальная, а в остальных вроде бы недоступно... ну да ладно, это, собственно, уже ненужные тонкости...



По теме:
Сообщение от Garry Galler
%random% имеет максимум = 32767
Можно псевдо-рандом соорудить с обходом ограничения:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@echo off
set "file=dictionary.txt"
set min=1
set n=0
set chr=0 1 2 3 4 5 6 7 8 9
set ir=10 &:разрядность цифр
 
echo Start read file: %time%
findstr /vnc:"~" "%file%"|gsort -n -t : -k 1 -r >$
<$ find ":"|set /p x=^&cmd /v/c echo !x! >num
echo Stop read file: %time%
pause
setlocal enabledelayedexpansion
for /f "tokens=1 delims=:" %%i in ('type num') do set istr=%%i&goto iloop
:iloop
set ind=!istr:~%cnt%,1!
if not "%ind%"=="" set /a cnt+=1&goto iloop
endlocal&set max=%cnt%&set var=%istr%
:next2
set "num="
cls
set /a inum=%random%%%(max-min+1)+min
set im=%inum% &:число знаков номера (рандом)
:loop
set /a k=1+%ir%*%random%/32768
for /f "tokens=%k%" %%i in ("%chr%") do (set num=%%i%num%)
if %num:~,1%==0 set "num="&goto loop
set /a im-=1
if %im% gtr 0 goto loop
if %num% gtr %var% goto next2
echo Строка N %num%
for /f "tokens=1* delims=:" %%a in ('findstr /rbc:"\<%num%\>" "$"') do echo.%%b
echo.
choice /m "Выходим: "
goto next%errorlevel%
:next1
>nul 2>&1 del $
>nul 2>&1 del num
:next0
:next255
pause&exit
Вопрос: Чтоб AviDemux конвертировал файлы с переменным битрейтом звука (vbr) автоматом

Я конвертирую фильмы с помощью AviDemux 2.5.2 через командную строку. Какую опцию надо написать, чтоб AviDemux конвертировал файлы с переменным битрейтом звука (vbr) без вопросов? Ну или автоматом отвечал yes?
Ответ: чтоб AviDemux конвертировал файлы с переменным битрейтом звука (vbr) без вопросов? Надо поставить галочку в Настройки - Automation - Automatially build VBR map
Вопрос: Как объединить три txt файла в одни, при этом проверить условие

Как объединить три txt файла в один, при этом должны идти проверка на успех, т.е. скопированы ли все три, если да то переход к одной группе действий, если нет то к другой.

У меня пока что то вроде этого, но оно не работает. Errorlevel всегда 0
Код Windows Batch file
1
2
3
4
5
6
7
@echo off
copy /b o1.txt /b + o2.txt /b + o3.txt /b o.txt /b
if %errorlevel% neq 1 (goto one) else (goto two)  
 
:one echo error way
 
:two echo correct way
Ответ:
Код Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
@echo off
 
copy /b "o1.txt" /b + "o2.txt" /b + "o3.txt" /b "o.txt" /b| find /c /v ""| >nul find "4"&& goto two|| goto one
 
:one
echo error way
pause>nul& exit/b 1
 
:two
echo correct way
pause>nul& exit/b 0
Вопрос: Добавление строк в txt-файл с инкрементом переменной в строке

Добрый день!
Помогите написать 2 батника:
1. Создать txt-файл с содержанием:
Text1
Text2
...
Text300

2. Создать txt-файл с содержанием:
Text1Text
Text2Text
...
Text300Text

Т.е. в файле изначально есть известный Text, к нему нужно добавить в конец увеличивающееся число; а во втором случае в середину этого текста в определенном месте. Text можно задать непосредственно в бат-файле. Не могу разобраться с циклом, заданием и увеличением переменной.
Ответ: Спасибо! То, что нужно.
Вопрос: Чтение строки из файла в переменную

Здравствуйте. Т.к. в написании 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"
.
Вопрос: Переименовать 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
файл будет такому имени.