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

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

Автор: digis14
Дата сообщения: 24.10.2010 14:46
Подскажите как переделать этот батник, для переименования по порядку
Имеется 231.jpg, tre02.jpg, 5u8i.jpg... с любыми названиями
Требуется 1.jpg, 2.jpg, 3.jpg...

Цитата:
@echo off
for %%a in ( *.jpg) do call :ren "%%a"
exit /b

:ren
set /a name = 1000000 + %random%
if exist "%name:~1%%~x1" goto :ren
ren "%~1" "%name:~1%%~x1"
Автор: 01MDM
Дата сообщения: 24.10.2010 15:00
digis14

Код:
@echo off
setlocal

for /f "tokens=*" %%i in ('dir /b *.jpg') do call:ren "%%i"
goto:eof

:ren
set /a cnt+=1
set "num=00%cnt%"

ren %1 "%num:~-3%%~x1"
Автор: FAPSI
Дата сообщения: 24.10.2010 15:00
Мужики, как с помощью командной строки определить имя диска флешки?
Общая задача заключается в том, что необходимо автоматически скопировать файл с винта на флешку с определённым именем.
или тут VBS нужен?
Автор: 01MDM
Дата сообщения: 24.10.2010 15:02
FAPSI
А где будет батник? На флешке?
Автор: FAPSI
Дата сообщения: 24.10.2010 15:54
нет, батник на компакт-диске.
с диска запускается батник через авторан, далее копируется файл с жесткого диска на вставленную флешку.
вот такая хитро-мудрая задача ))
Автор: 01MDM
Дата сообщения: 24.10.2010 16:18
FAPSI
Узнаем букву флешки:

Код:
@echo off
setlocal

set "exec=wmic logicaldisk where DriveType^="2" get Name /value"

for /f "tokens=*" %%i in ('%exec%') do 1>nul set "%%i"
echo %name%
Автор: lid111
Дата сообщения: 24.10.2010 18:56
res2001, мне бы в идеале так: входная кодировка - произвольная, а на выходе - 866. То есть получается, что входную кодировку нужно ещё распознать. То, что вы предложили - такие задачи решает или нет?
Автор: bomzzz
Дата сообщения: 24.10.2010 19:22
постоянно приходить декодировать, самый удобный вот этот дос вин конвертер
Автор: 01MDM
Дата сообщения: 24.10.2010 19:49
lid111

Цитата:
То есть получается, что входную кодировку нужно ещё распознать.


iconv можно использовать и без указания входной кодировки:

Код:
iconv -t cp866 1.txt 1>2.txt
Автор: lid111
Дата сообщения: 24.10.2010 20:59
01MDM, эта приблуда для Линукс? У меня Windows.
Автор: 01MDM
Дата сообщения: 24.10.2010 21:22
lid111

Цитата:
эта приблуда для Линукс? У меня Windows

GNU is NOT Linux:

Код: iconv.exe -t cp866 1.txt 1>2.txt
Автор: lid111
Дата сообщения: 24.10.2010 22:04
01MDM, у вас в примере записана обработка одного файла, а мен нужно всех в каталоге сразу. Попробовал те примеры, что тут - http://ru.wikipedia.org/wiki/Iconv - у меня не работают (или я что-то не так установил)
Автор: 01MDM
Дата сообщения: 24.10.2010 22:38
lid111

Цитата:
в примере записана обработка одного файла, а мен нужно всех в каталоге сразу.


Код:
@echo off

for /f "tokens=*" %%i in ('dir /b *.txt') do iconv -t cp866 "%%i" 1>"866_%%i"
Автор: lid111
Дата сообщения: 24.10.2010 23:00
01MDM, создаются новые файлы с именами 866_старое имя - но пустые, нулевого размера.

Мне нужно так: чтобы перекодировались все файлы в каталоге, имеющие расширение LST, при этом входная кодировка может быть любой (Win 1251, UTF-8 или 866), а результат должен быть 866, при этом старые файлы должны замениться на новые с теми же именами.
Автор: FAPSI
Дата сообщения: 24.10.2010 23:33
01MDM
Большое тебе спасибо! Ты ГЕНИЙ.
Я перерыл весь инет, нигде не нашел. "авторитетные" ребята с других форумов говорили что это невозможно ))) Думал, что придётся использовать нестандартные методы (
Жму твою руку!
+++
Автор: 01MDM
Дата сообщения: 25.10.2010 09:41
lid111

В общем iconv не справляется с utf-8 :( Перепробовал несколько версий и сборок. Хотя кодировка заявлена:

Код:
iconv -l
Автор: digis14
Дата сообщения: 25.10.2010 11:22
01MDM подскажи почему получается не по порядку при таких вариантах
08.jpg, 09jpg, 10.jpg, 11.jpg, -> эти правильно по списку переименовывает
8.jpg, 9.jpg, 10.jpg, 11.jpg, -> эти неправильно
Автор: bomzzz
Дата сообщения: 25.10.2010 11:23
digis14
потому что 0 и 1 до 8 и 9 идут
Автор: 01MDM
Дата сообщения: 25.10.2010 11:54
digis14,
Как правильно заметил bomzzz, сортировка идет как строка, где символы 0 и 1 стоят раньше 8 и 9.

Автор: digis14
Дата сообщения: 25.10.2010 12:40
Это понятно, я просто глядя на total commander подумал что есть универсальное решение
Автор: wolf0425
Дата сообщения: 25.10.2010 13:17
нужно получить список всех файлов на диске (с поддиректориями)
но dir /l /b /s /a-d t:\ - не устраивает: проблема в том, что в один из подкаталогов смонтирован отсутствующий на момент запуска программы диск, так что при выполнении такой команды выскакивает GUI запрос про отсутствие диска и батник тормозится пока не нажать мышкой "продолжить".

Есть какие-то другие готовые варианты, например где бы можно было задать список каталогов-исключений, которые сканировать не нужно?
или только писать самому обход каталогов?
Автор: 01MDM
Дата сообщения: 25.10.2010 15:34
wolf0425
Может на момент выполнения dir просто отмонтировать этот диск?
Как-нибудь так:

Код:
@echo off
setlocal

for /f %%i in ('mountvol C:\Folder /l') do set "id=%%i"
mountvol "C:\Folder" /d

dir /b /s /a-d 1>list.txt

mountvol "C:\Folder" %id%
Автор: wolf0425
Дата сообщения: 25.10.2010 15:45

Цитата:
Может на момент выполнения dir просто отмонтировать этот диск?

так - не хотелось бы. это же админские права тогда нужны...
Автор: 01MDM
Дата сообщения: 25.10.2010 15:58
wolf0425,
Можно попробовать wmic, но не уверен, что проблема не останется:

Код:
wmic datafile where "drive='g:'" get name 1>list.txt
Автор: wolf0425
Дата сообщения: 25.10.2010 18:21
01MDM
попробовал я wmic, обломался ждать - подумал молча зависло,
попробовал wmic datafile where "drive='c:'" get name 1>file - оно явно чем-то занято, грузит одно ядро проца на 100%, но за 20 минут пока ничего в файл не выдало. загадка
Автор: 01MDM
Дата сообщения: 25.10.2010 18:27
wolf0425
Ну да, тормозилово еще то . Логический раздел на 13500 файлов обрабатывал минуты 4, флешку почти сразу.
Автор: wolf0425
Дата сообщения: 25.10.2010 19:15

Цитата:
Ну да, тормозилово еще то
угу, думало полчаса, в итоге выдало файл из одной пустой строки
Автор: 01MDM
Дата сообщения: 25.10.2010 19:57
wolf0425
Если ты это проделывал в 7-ке, то вероятно wmic банально не пускали в какой-нибудь каталог. Кстати обновилась nircmd до 2.45, в ней есть контекст elevate для запуска с повышением привилегий в висте и 7.
Автор: wolf0425
Дата сообщения: 25.10.2010 21:37

Цитата:
вероятно wmic банально не пускали в какой-нибудь каталог.
по моему это ещё совершенно не повод не писать содержимое корня и всех прочих каталогов, в которые пускали...
Автор: fpkx
Дата сообщения: 26.10.2010 08:58
Помогите пожалуйста написать батник, который проверяет некий процесс каждую минуту на кол-во используемой памяти, и по превышении определенного количества закрывал его...
с помощью pslist и pskill можно сделать, но я в батниках совсем ноль

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


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