обрезать по заданному MAX PATH
есть список
я нашел как только обрезать длину файла. т.е.: а нужно именно обрезать по длине пути т.е. уровнять MAX PATH 1. причем желательно: чтобы я мог выбрать длину MAX PATH до которого нужно обрезать (т.е. нужно не до 255 а скажем до 200 чтобы при копировании файлов в другое место был разбег для глубины) 2. и обязательно сохранение расширения файла. 3. как сделать чтобы захватывались для обработки длины MAX PATH только файлы с расширением pdf ? |
Код:
set f1=1.txt |
Цитата:
...проверил - тут вставляется правильно, а на руборде я вставил 3 строки по 100 символов а в итоге они показывалиь с визуально разной длиной. поэтому вставил картинкой Цитата:
(с сохранением пути нахождения файла) нужно сохранить структуру папок. там около 1800 путей с папками, подпапками и в конце пути один файл txt т.е. количество путей с папками = количеству файлов, которые нужно обрезать по поводу поиска например использовать такой алгоритм получится?: Код:
поиск файла *.txt |
Цитата:
Код:
set $m=C:\Program Files\*.txt Цитата:
|
amel27, 5 минут тупил над "волшебной" строкой, удовлетворенно крякнув процетировал д.Ватсона: "Но черт возьми, КАК?!!!" (в смысле "оно еще и работает")
shadowbat, Вы кажется говорили про pdf, а сейчас уже про txt... |
Цитата:
а как сделать чтобы вместо списка он работал с самими файлами, и изменял имена файлов с учетом max path? //забрал себе в коллекцию батник. у меня 3 програмки есть по созданию списка файлов - amel27, но Ваш bat самый простой и главное удобный когда нужно без заморочек сделать листинг файлов ! Цитата:
|
кто может помочь?
вроде процедура стандартная. так сказать основополагающая. любой кто сталкивался с длинными именами должен иметь у себя в заначке методы работы с ними, как например обрезка по заданной длине... =) в гугле поиск по фразе "max path" + "только на русском" выдает первую же ссылку в эту тему |
не знаю помогут тут или нет реализовать через BAT/CMD, но если кому то тоже понадобится такая MAX_PATH обрезка - мне помогли в соседней ветке
AutoIt-решение от Creator'a http://forum.oszone.net/post-1436849.html#post1436849 |
Цитата:
вариант с выводом в "*_TST.CMD" (для ознакомления перед запуском): Код:
set $m=C:\Program Files\*.txt Цитата:
|
Цитата:
Цитата:
|
shadowbat, в файл выводятся только файлы, длина пути которых (без расширения) превышает заданный лимит
|
я так понял папка из которой запускается батник не важна.
при таком коде создается пустой cmd Код:
set $m=C:\08. Дом и Хобби\Йога\Йога - искусство быть стройным\*.pdf |
shadowbat, кодировка самого батника DOS (866)? (блокнот не катит)
|
Цитата:
РЕШЕНИЕ: Код:
chcp 1251 ----- 1. P.S.S. а как удалить файл cmd после выполнения? del "%$f%" перед chcp866 не помогает 2. P.S.S.S. |
Цитата:
Цитата:
Цитата:
Код:
(for /f "usebackq delims=" %%a in ("2.txt") do @echo %%~dpa)>3.txt Цитата:
- разные имена файлов могут стать одинаковыми, как должен вести себя скрипт: пропускать файл, перезаписывать последним, выдавать запрос или переименовывать по какому-то правилу? - имя файла может быть потеряно полностью, каковы действия скрипта: перемещать файл с именем папки или пытаться сохранить хотя бы часть имени файла?... возможны и забавные ситуации типа "C:\DIR1\DIR2\.pdf" |
значит получается так?:
РЕШЕНИЕ без лога работы: РЕШЕНИЕ с логом работы: amel27, Вы профессионал своего дела! Цитата:
|
Цитата:
|
by.Serj, если речь про две строки в цикле:
Код:
(for /f "delims=" %%a in ('dir /b/s "%$m%"') do @( Код:
set "b=%%~dpna" Код:
echo.!b:~0,%mp%!%%~xa "%mp%" - значение переменной mp "!b:~0,%mp%!" - %mp% первых символов переменной b чтобы избежать использования EnableDelayedExpansion используем трикс с CALL: добавляем перед командой CALL и заменяем "!" на "%%" (отложенная подстановка), в результате при (первом) вызове CALL будут подставлены значения %%a и %mp%, при (втором) вызове ECHO - значение b |
Время: 05:51. |
Время: 05:51.
© OSzone.net 2001-