Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] приведение имени файла к 8.3 (http://forum.oszone.net/showthread.php?t=134904)

tr011_tmn 16-03-2009 15:09 1065468

приведение имени файла к 8.3
 
Добрый день, возник вопрос
имеется каталог с файлами имена которых первышают 8.3, существует ли возможность привести их к виду 8.3. Отсечь ненужные символы? в имени файла? не потеряв смысла первых 8 символов имени.
Код:

xcopy /n
не устраивает так дает не верный результат
пример:
Код:

Tr011_md1_11.dat
Tr011_md2_11.dat
Tr011_md3_11.dat
использование xcopy /n:
Tr011_~1.dat
Tr011_~1.dat
Tr011_~1.dat
требуется получить
Tr011_md1.dat
Tr011_md2.dat
Tr011_md3.dat


gora 16-03-2009 15:40 1065493

tr011_tmn, скопируйте приведенный скрипт в редактор и сохраните его под каким нибудь длинным именем и в папке с длинным именем, а затем запустите его. Посмотрите результат и выберите себе нужный.
Код:

@echo off
echo %%0        =%0
echo %%~0        =%~0
echo %%~f0        =%~f0
echo %%~s0        =%~s0
echo %%~d0        =%~d0
echo %%~p0        =%~p0
echo %%~n0        =%~n0
echo %%~x0        =%~x0
echo %%~a0        =%~a0
echo %%~t0        =%~t0
echo %%~z0        =%~z0
echo %%~dp0        =%~dp0
echo %%~nx0        =%~nx0
echo %%~sn0        =%~sn0
echo %%~sx0        =%~sx0
echo %%~dpn0        =%~dpn0
echo %%~snx0        =%~snx0
echo %%~ftza0        =%~ftza0
pause>>nul


tr011_tmn 16-03-2009 16:10 1065527

Цитата:

Цитата gora
Посмотрите результат и выберите себе нужный. »

попробовал но ни один из предложенных вариантов не подходит т.к. ни один из результатов не удовлетворяют требуемому:
Код:

%0      ="C:\Documents and Settings\tr011\Рабочий стол\nametest\nametestcmd.cmd"
%~0    =C:\Documents and Settings\tr011\Рабочий стол\nametest\nametestcmd.cmd
%~f0    =C:\Documents and Settings\tr011\Рабочий стол\nametest\nametestcmd.cmd
%~s0    =C:\DOCUME~1\tr011\0016~1\nametest\NAMETE~1.CMD
%~d0    =C:
%~p0    =\Documents and Settings\tr011\Рабочий стол\nametest\
%~n0    =nametestcmd
%~x0    =.cmd
%~a0    =--a------
%~t0    =16.03.2009 18:06
%~z0    =361
%~dp0  =C:\Documents and Settings\tr011\Рабочий стол\nametest\
%~nx0  =nametestcmd.cmd
%~sn0  =NAMETE~1
%~sx0  =.CMD
%~dpn0  =C:\Documents and Settings\tr011\Рабочий стол\nametest\nametestcmd
%~snx0  =NAMETE~1.CMD
%~ftza0 =--a------ 16.03.2009 18:06 361 C:\Documents and Settings\tr011\Рабочий
стол\nametest\nametestcmd.cmd


gora 16-03-2009 21:18 1065834

Цитата:

Цитата tr011_tmn
существует ли возможность привести их к виду 8.3. »

Для вашего случая
Код:

Tr011_md1_11.dat
Tr011_md2_11.dat
Tr011_md3_11.dat

формат 8.3 предполагает такой вид:
Код:

TR011_~1.DAT
TR011_~2.DAT
TR011_~3.DAT

Вы же хотите
Цитата:

Цитата tr011_tmn
Tr011_md1.dat
Tr011_md2.dat
Tr011_md3.dat »

а это 9 символов до расширения, а не 8! Обрезать имена до 8 символов можно, но они будут одинаковые. Определитесь, что же Вам нужно, преобразовать в формат 8.3 или обрезать имя до 8 символов? Это не одно и тоже.

tr011_tmn 16-03-2009 22:42 1065935

Цитата:

Цитата gora
преобразовать в формат 8.3 или обрезать имя до 8 символов »

извиняюсь за то что ввел в заблуждение, мне требуется обрезать имя файла до 8ми символов. Мне не очень хорошо порой дается выразить свою мысль, и четко сформулировать.
Существует ли возможность обрезать имя до 8 символов.

gora 16-03-2009 22:47 1065939

Цитата:

Цитата tr011_tmn
Существует ли возможность обрезать имя до 8 символов. »

Код:

@Echo off
SetLocal enabledelayedexpansion
Set "Folder=D:\Test long name"
Echo.
Echo оригинальные имена
For /f %%a in ('Dir "%Folder%" /B /A-D') Do echo %%a
Echo.
Echo имена формата 8.3
For /f %%a in ('Dir "%Folder%" /B /A-D') Do echo %%~snxa
Echo.
Echo имена обрезанные до длины 8 символов
For /f %%a in ('Dir "%Folder%" /B /A-D') Do (
Set TempName=%%~na
Echo !TempName:~0,8!%%~xa
)
Pause>nul


tr011_tmn 17-03-2009 07:40 1066034

gora, спасибо все получилось и даже более чем


Время: 08:52.

Время: 08:52.
© OSzone.net 2001-