Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 3

Автор: Maza Faka
Дата сообщения: 16.07.2007 07:58
mitrichbel

Цитата:
получаю "Файл не найден".


Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
Автор: cluster
Дата сообщения: 16.07.2007 15:51
Ребят, подскажите способ запуска файла лежащего в
\\server-2\c$\WORK\tools
Консоль говорит, что не поддерживает пути UNC
Автор: KapralBel
Дата сообщения: 16.07.2007 15:58
cluster
А такой способ

Код:
Net use Z: \\server-2\c$
Z:
CD Z:\WORK\tools
proga
net use z: /delete
Автор: cluster
Дата сообщения: 16.07.2007 16:54
KapralBel

Цитата:
\\server-2\c$\WORK\tools\proga.exe

так вот так вот и ругается

Цитата:
Net use Z: \\server-2\c$
Z:
CD Z:\WORK\tools
proga
net use z: /delete

так и думал, но спасибо.
Автор: king_stiven
Дата сообщения: 16.07.2007 17:05
Делаю

Код: setlocal enabledelayedexpansion
for %%c in ("текущая папка") do (
echo %%~pc>1.txt
for %%i in ("1.txt") do (
for /f "usebackq tokens=*" %%d in (`dir "*.mp3" /s /b /a:-d`) do (
set old_way=%%~dpd
call :in "%%d" "%новый путь%\!old_way:~%%~zi!"
Автор: KapralBel
Дата сообщения: 16.07.2007 17:05
cluster
Оригинальная прога
У меня все запускаются таким образом
\\server-2\c$\WORK\tools\proga.exe

Может она имеет какие-то подключаемые библиотеки?
Автор: cluster
Дата сообщения: 16.07.2007 17:13
KapralBel
извиняюсь, тестил на *.wsf. с исполняемыми файлами работает.
нужно именно *.wsf
Автор: Elroir
Дата сообщения: 16.07.2007 17:17
king_stiven
Я что-то никак не могу понять, что должно получаться из "!old_way:~%%~zi!"
Приведи пример, пожалуйста.
Автор: king_stiven
Дата сообщения: 16.07.2007 17:41
Elroir
новый путь- D:\
текущий каталог(%%c)- C:\старый путь\нужная папка\
В 1.txt вставляем(%%~pc)- \старый путь\

Например, для файла (%%d ) C:\старый путь\нужная папка\подпапка\10.mp3
Убираем первые несколько знаков: (~%%~zi), получаем "!old_way:~%%~zi!"- нужная папка\подпапка\
соответственно "%новый путь%\!old_way:~%%~zi!"- D:\нужная папка\подпапка\
Автор: Elroir
Дата сообщения: 16.07.2007 20:28
king_stiven
Понятно.
Можно сделать так:

Код:
for %%c in ("текущая папка") do (
echo %%~pc>1.txt
for %%i in ("1.txt") do (
for /f "usebackq tokens=*" %%d in (`dir "*.mp3" /s /b /a:-d`) do (
call :in "%%d" "%новый путь%" "%%~dpd" %%~zi
...
...
:in
set old_way=%~3
set old_way=%old_way:!=^^^^!%
setlocal enabledelayedexpansion
echo %~2\!old_way:~%4!

...
Автор: king_stiven
Дата сообщения: 16.07.2007 23:04
Elroir
Ага, подошло, спасибо. Только наверно имелось в виду не

Цитата:
set old_way=%old_way:!=^^^^!%

а
set old_way=%old_way:!=^!%
Автор: Elroir
Дата сообщения: 16.07.2007 23:55
king_stiven
Вообще-то с одной галочкой у меня не сработало.
Если у тебя работает - хорошо
Автор: mitrichbel
Дата сообщения: 16.07.2007 23:59
Maza Faka

Цитата:
не забывайте удалять пробелы в конце каждой строки
не помогло - тот же самый результат.
Автор: Elroir
Дата сообщения: 17.07.2007 01:16
mitrichbel
Maza Faka

Цитата:
получаю "Файл не найден"

Такое сообщение выводит команда dir, когда в проверяемой директории нет ни одного файла, который бы подходил к заданной маске.
Автор: newhome
Дата сообщения: 17.07.2007 08:27
Maza Faka
SBS2.com - да, именно, что религия. Эта программа заменяет файл пустым, если указывать вход. и исход. файл один и тот же.
Встроенными ср-вами не очень хорошо, т.к. очень долго...
Но все равно спасибо =)
Нашел полезную програм. REPTXT32 довольно удобно и без глюков=)
Автор: KapralBel
Дата сообщения: 17.07.2007 08:36
TCPIP

Код: @Echo Off
For %%a in (*.rar) Do Call :_UR "%%a" "%%~na"
GoTo :EOF

:_UR
Set ext1=%~x2
Set nam1=%~n2
if /i "%ext1%" == ".part001" GoTo :_UR1
if /i "%ext1%" == ".part01" GoTo :_UR1
if /i "%ext1%" == ".part1" GoTo :_UR1
if /i "%ext1%" == "" GoTo :_UR1
GoTo :EOF
:_UR1
RAR x %1 %Nam1%\
GoTo :EOF
Автор: Maza Faka
Дата сообщения: 17.07.2007 09:14
Elroir

Цитата:
Такое сообщение выводит команда dir, когда в проверяемой директории нет ни одного файла, который бы подходил к заданной маске


Дык откуда мне знать, что он пытается работать с каталогом в котором нет ни одного текстового файла?
Я скопировал код в буфер обмена и не удалил концевые пробелы, батник выдал ошибку "Файл не найден", хотя файлы в каталоге были...

Добавлено:
mitrichbel
У меня работает на 100%, в качестве рабочего каталога в батнике используется "c:\test" замени на нужный тебе.
Автор: mitrichbel
Дата сообщения: 17.07.2007 11:03
Maza Faka

Цитата:
пытается работать с каталогом в котором нет ни одного текстового файла?
ну я не настолько тупой всё-таки)

сейчас на рабочей машине - работало долго, судя по окну консоли.
Только сообщения на экране нечитаемые после того, как раскомментировал вторую строчку.
В папке test создано 125 текстовых файлов без расширений, каждый состоит из одной строчки, взятой из исходных файлов. Названия файлов тоже не подчиняются какому-либо очевидному правилу, состоят из отдельных слов, взятых из обрабатываемых файлов, или пятизначных чисел.
А на экране окно Windows - Заголовок "1700#1", текст "Windows не удалось найти 1700#1. Проверьте, что имя было введено правильно" и так далее. После нажатия OK батник продолжает работу. Прошло минут 15 - не дождался, Ctrl+C. Количество новых текстовых файлов из одной строки достигло 250 (исходных - около 400).
Автор: Maza Faka
Дата сообщения: 17.07.2007 12:53
mitrichbel

Цитата:
я не настолько тупой всё-таки

Я так не считаю! Извини если обидел.

Попробуй этот код, если исходные txt-файлы в DOS кодировке, то сохрани код в DOS кодировке, если ANSI, то и код сохрани в ANSI кодировке:


Код:
@echo off

set folder=c:\test

for /f "tokens=1,2,4*" %%a in ('
dir /t:w "%folder%\*.txt" ^| find /i ".txt"') do (
if "%%d"=="" (call:mod %%a %%b %%c) else (call:mod %%a %%b "%%c %%d")
)

pause
goto :eof

:mod
set m_time=%~1 %~2:00
set m_time=%m_time:.=-%
if exist %folder%\tmp.txt del /f /q tmp.txt

for /f "delims=" %%f in (
'more "%folder%\%~3"') do echo %%f | find /i /v "ненужный текст">> %folder%\tmp.txt

del /f /q "%folder%\%~3"
ren %folder%\tmp.txt %3
nircmd setfiletime "%folder%\%~3" "" "%m_time%"
Автор: mitrichbel
Дата сообщения: 17.07.2007 14:47
Maza Faka
всё в порядке

Код вечером попробую, отпишусь. Спасибо
Автор: 01MDM
Дата сообщения: 17.07.2007 15:06
Как получить почту с gmail.com?

Код:
getmail -s pop.gmail.com -u MyId -pw Mypass -port 995
:: такой порт указан на офсайте (не 110)
Автор: KapralBel
Дата сообщения: 17.07.2007 15:25
01MDM
GMail отдает почту по безопасное соединение по спецпорту TSL и просто сменить с 110 на 995 - не имеет смысла
Автор: 01MDM
Дата сообщения: 17.07.2007 15:28
KapralBel
Что придумать? Что это за секретный протокол?
Автор: Elroir
Дата сообщения: 17.07.2007 15:39
01MDM
Протокол не секретный. Просто нужен клиент, который поддерживает этот протокол. Насколько я вижу (пробежался по справке), getmail этот протокол не поддерживает.
Автор: KapralBel
Дата сообщения: 17.07.2007 15:55
01MDM
С ходу не нашел такого клиента (именно с поддержкой командной строки) под винду

Добавлено:
Стоп
нашел
http://www.dataenter.co.at/products/popbeamer.htm
Автор: mitrichbel
Дата сообщения: 17.07.2007 20:49
Maza Faka
В ходе выполнения в консоли неоднократно были сообщения
"..." не является внутр. или внешней командой, исп. программой или пакетным файлом.
На месте многоточия - разные слова и буквосочетания латинскими буквами. По одному-два раза появлялись "Ошибка в синтаксисе команды", "Отказано в доступе", "Синтаксическая ошибка в имени файла, имени папки или метке тома", "Не удается найти указанный файл".
В конце концов "Непредвиденное появление: <<" и "Непредвиденное появление: ||", "Ошибка в синтаксисе команды" и всё.

Выполнялся батник очень долго - около часа (AMD 2200, 512Mb, XP) разбирался с двумя десятками файлов общим объёмом в мегабайт. Я вручную сделал бы гораздо быстрее..
Автор: TCPIP
Дата сообщения: 18.07.2007 00:06
KapralBel
Спасибо! И ведь прибивал же специально, но видимо был недостаточно упорен...
Есть дополнительный вопрос: как при этом обработать файлы с точками в именах?
Например, файлы: xx.Name.rar
Данный бэтч их не обрабатывает, обрабатывая лишь файлы вида Name.rar и Name.part01.rar.
Автор: Maza Faka
Дата сообщения: 18.07.2007 07:04
mitrichbel

Цитата:
"Непредвиденное появление: <<" и "Непредвиденное появление: ||"


Ммм... попробуй так:

Код:
@echo off
chcp 1251>nul
set folder=c:\test

for /f "tokens=1,2,4*" %%a in ('
dir /t:w "%folder%\*.txt" ^| find /i ".txt"') do (
if "%%d"=="" (call:mod %%a %%b %%c) else (call:mod %%a %%b "%%c %%d")
)

goto :eof

:mod
set m_time=%~1 %~2:00
set m_time=%m_time:.=-%
if exist %folder%\tmp.txt del /f /q tmp.txt

for /f "delims=" %%f in (
'more "%folder%\%~3"') do echo "%%f" | find /i "ненужный текст">nul || echo %%f>> %folder%\tmp.txt

del /f /q "%folder%\%~3"
ren %folder%\tmp.txt %3
nircmd setfiletime "%folder%\%~3" "" "%m_time%"
Автор: KapralBel
Дата сообщения: 18.07.2007 07:08
TCPIP
Это том многотомного архива или отделный архив?

Добавлено:
Если часть, то как называются остальные (по какой схеме)
Автор: mitrichbel
Дата сообщения: 18.07.2007 08:42
Maza Faka
что такое SED? Все файлы в 1251, по большей части в них текст на русском.
Цитата:
Если текстовые файлы большие то и обрабатывать их батник будет долго
Я как-то привык, что компьютер способен выполнять рутинную работу быстрее человека..

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Автозагрузка терминальной сессии


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.