Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] обрезать по заданному MAX PATH

Ответить
Настройки темы
CMD/BAT - [решено] обрезать по заданному MAX PATH

Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


есть список


я нашел как только обрезать длину файла. т.е.:


а нужно именно обрезать по длине пути т.е. уровнять MAX PATH


1. причем желательно:
чтобы я мог выбрать длину MAX PATH до которого нужно обрезать
(т.е. нужно не до 255 а скажем до 200 чтобы при копировании файлов в другое место был разбег для глубины)

2. и обязательно сохранение расширения файла.

3. как сделать чтобы захватывались для обработки длины MAX PATH только файлы с расширением pdf ?

Отправлено: 11:51, 18-06-2010

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
set f1=1.txt
set f2=2.txt
set mp=100

(for /f "usebackq delims=" %%a in ("%f1%") do @(
set "b=%%~dpna"&call echo.%%b:~0,%mp%%%%%~xa))>"%f2%"
ёпрст, откуда мода пошла текст картинками вставлять?.. прям хоть FineReader ставь
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:17, 18-06-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата amel27:
ёпрст, откуда мода пошла текст картинками вставлять?.. прям хоть FineReader ставь »
это специально, потому что если скопировать текстом одинаковые по длине 3 строки то они будут разные в итоге по длине визуально.
...проверил - тут вставляется правильно, а на руборде я вставил 3 строки по 100 символов а в итоге они показывалиь с визуально разной длиной. поэтому вставил картинкой


Цитата shadowbat:
есть список
P.s. я допустил ошибку. есть не список а есть файлы и их нужно обрезать по длине MAX PATH через переименование например.
(с сохранением пути нахождения файла)

нужно сохранить структуру папок. там около 1800 путей с папками, подпапками и в конце пути один файл txt
т.е. количество путей с папками = количеству файлов, которые нужно обрезать

по поводу поиска например использовать такой алгоритм получится?:
Код: Выделить весь код
поиск файла *.txt
возвращение max path
переименовка
продолжить поиск

Последний раз редактировалось shadowbat, 18-06-2010 в 12:45.


Отправлено: 12:30, 18-06-2010 | #3


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата shadowbat:
есть не список а есть файлы »
Код: Выделить весь код
set $m=C:\Program Files\*.txt
set $f=2.txt
set mp=50

(for /f "delims=" %%a in ('dir /b/s "%$m%"') do @(
set "b=%%~dpna"&call echo.%%b:~0,%mp%%%%%~xa))>"%$f%"
P.S. как бы после такого укорачивания имен не возникли "дубли"

Цитата shadowbat:
если скопировать текстом одинаковые по длине 3 строки то они будут разные в итоге по длине визуально »
для этого есть тег CODE
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:51, 18-06-2010 | #4


Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


amel27, 5 минут тупил над "волшебной" строкой, удовлетворенно крякнув процетировал д.Ватсона: "Но черт возьми, КАК?!!!" (в смысле "оно еще и работает")

shadowbat, Вы кажется говорили про pdf, а сейчас уже про txt...

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 12:54, 18-06-2010 | #5


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата:
set $m=C:\Program Files\*.txt
set $f=2.txt
set mp=50

(for /f "delims=" %%a in ('dir /b/s "%$m%"') do @(
set "b=%%~dpna"&call echo.%%b:~0,%mp%%%%%~xa))>"%$f%"
так ведь этот код делает СПИСОК структуры папок. а потом этот список укорачивает по max path
а как сделать чтобы вместо списка он работал с самими файлами, и изменял имена файлов с учетом max path?

//забрал себе в коллекцию батник. у меня 3 програмки есть по созданию списка файлов - amel27, но Ваш bat самый простой и главное удобный когда нужно без заморочек сделать листинг файлов !


Цитата NiOl:
shadowbat, Вы кажется говорили про pdf, а сейчас уже про txt... »
разницы ведь нет. расширение задается в самом коде

Последний раз редактировалось shadowbat, 18-06-2010 в 13:13.


Отправлено: 12:55, 18-06-2010 | #6


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


кто может помочь?
вроде процедура стандартная. так сказать основополагающая. любой кто сталкивался с длинными именами должен иметь у себя в заначке методы работы с ними, как например обрезка по заданной длине...

в гугле поиск по фразе "max path" + "только на русском" выдает первую же ссылку в эту тему

Последний раз редактировалось shadowbat, 18-06-2010 в 14:14.


Отправлено: 13:57, 18-06-2010 | #7


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


не знаю помогут тут или нет реализовать через BAT/CMD, но если кому то тоже понадобится такая MAX_PATH обрезка - мне помогли в соседней ветке
AutoIt-решение от Creator'a http://forum.oszone.net/post-1436849.html#post1436849

Последний раз редактировалось shadowbat, 18-06-2010 в 16:40.


Отправлено: 16:24, 18-06-2010 | #8


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата shadowbat:
кто может помочь? »
слишком часто меняете условие задачи - не успеваю править батник,
вариант с выводом в "*_TST.CMD" (для ознакомления перед запуском):
Код: Выделить весь код
set $m=C:\Program Files\*.txt
set $f=%~n0_tst.cmd
set mp=50

(for /f "delims=" %%a in ('dir /b/s "%$m%"') do @(
set "b=%%~dpna"& call set "c=%%b:~0,%mp%%%"& call call set "d=%%%%b:%%c%%=%%%%"
if defined d call echo move "%%a" "%%c%%%%~xa"))>"%$f%"
Цитата shadowbat:
мне помогли в соседней ветке »
вы еще попросите на VBS... и в "программировании" на Си... и на Delphi... вдруг кому понадобится (см. п.2.2 правил)
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:50, 18-06-2010 | #9


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата amel27:
вариант с выводом в "*_TST.CMD" (для ознакомления перед запуском): »
наверняка я что то не так понял. изменил C:\Program Files\ на нужные различные пути - в любом случае создается _tst.cmd пустой размером 0кб. а имена файлов не изменяются

Цитата amel27:
(см. п.2.2 правил)
ок. больше не повторится

Последний раз редактировалось shadowbat, 18-06-2010 в 17:47.


Отправлено: 17:05, 18-06-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] обрезать по заданному MAX PATH

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Высокий приоритет заданному процессу 7human7 Скриптовые языки администрирования Windows 14 26-01-2012 16:34
...cannot find the specified path... - перенаправление? semiono Автоматическая установка Windows 2000/XP/2003 1 09-04-2010 01:43
Удаление записей из таблицы по заданному времени на php magwolf Вебмастеру 5 14-08-2009 14:13
Win2003 и Max CPUID max to 3 3au4er Microsoft Windows NT/2000/2003 0 06-08-2008 12:13
Поиск элементов массива, чья сумма равна заданному числу Qwe1 Программирование и базы данных 28 26-09-2006 03:31




 
Переход