Показать полную графическую версию : [решено] приведение имени файла к 8.3
tr011_tmn
16-03-2009, 15:09
Добрый день, возник вопрос
имеется каталог с файлами имена которых первышают 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
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
Посмотрите результат и выберите себе нужный. »
попробовал но ни один из предложенных вариантов не подходит т.к. ни один из результатов не удовлетворяют требуемому:
%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
существует ли возможность привести их к виду 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_md1.dat
Tr011_md2.dat
Tr011_md3.dat »а это 9 символов до расширения, а не 8! Обрезать имена до 8 символов можно, но они будут одинаковые. Определитесь, что же Вам нужно, преобразовать в формат 8.3 или обрезать имя до 8 символов? Это не одно и тоже.
tr011_tmn
16-03-2009, 22:42
преобразовать в формат 8.3 или обрезать имя до 8 символов » извиняюсь за то что ввел в заблуждение, мне требуется обрезать имя файла до 8ми символов. Мне не очень хорошо порой дается выразить свою мысль, и четко сформулировать.
Существует ли возможность обрезать имя до 8 символов.
Существует ли возможность обрезать имя до 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
gora, спасибо все получилось и даже более чем
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.