Skracanie nazw plików

0

Witam,

Mam taki mały i szybki problemik. Aplikacja do której nie mam dostępu generuje pliki o nazwie
dsdsd8998899.txt ( jest w tym 30 znaków ). Druga aplikacja to ELIXIR która jest aplikacją dosową, nie rozumie tak długich plików. Pliki generowane z tej głównej aplikacji są zapisywane w jednym folderku.

Czy może ktoś mi pomóc i zmajstrować skrypcik który zmieni nazwy z długich na krótkie takie 8+3.
Może ktoś ma gotowy skrypt w bat też może być.

Dzięki serdeczne za pomoc
Piotrek Redel </delphi>

0

Ależ te pliki już posiadają nazwy 8+3 (generuje je system).

Jeśli system jest współczesny (Windows 2000, XP, Vista), to podejrzeć je możesz za pomocą skryptu (*.bat)

@echo off
for %%f in (*) do echo (%%~nxsf)  %%~nxf
echo.
pause

Możesz posługiwać się zarówno nazwą krótką, jak i długą jednocześnie.

0

Albo skorzystaj z funkcji RenameFile w pętli i ChangeFileExt. :-|

0
Szczawik napisał(a)

Ależ te pliki już posiadają nazwy 8+3 (generuje je system).

Jeśli system jest współczesny (Windows 2000, XP, Vista), to podejrzeć je możesz za pomocą skryptu (*.bat)

@echo off
for %%f in (*) do echo (%%~nxsf)  %%~nxf
echo.
pause

Możesz posługiwać się zarówno nazwą krótką, jak i długą jednocześnie.

Oki to by wystarczyło, ale na XP nie zmienia nazwy tylko wyświetla te pliki. A mi chodziło o zmienianie ich nazw na krótkie?

Redelek

0

Nie zrozumiałeś - te pliki mają dwie nazwy (jednocześnie) - i w wersji krótkiej, na przykład (np.: PROGRA~1) i w wersji długiej (np. Program files). Jeśli program obsługuje długie, to zadziała i na krótkich, jeśli obsługuje tylko krótkie, to może z nich spokojnie korzystać.

Jak mimo wszystko zależy Ci na zmianie nazwy, to proponuję skrypt:

@echo off
for %%f in (*.txt) do ren "%%~nxf" "%%~nsf.txt"
echo.
pause

Plik jednocześnie posiada dwie nazwy; zatem wywołanie na przykład polecenia (załóżmy, że nazwy są prawidłowe):

ren "Plik z długą nazwą.txt" "PLIKZD~1"

nie przyniesie żadnego efektu, bo plik już posiada taką nazwę (bo posiada obie). Dlatego trzeba zmienić nazwę na inną (w przykładzie obcinam rozszerzenie *.txt przez brak przełącznika x w krótkiej nazwie i samodzielnie dodaję je od nowa - małymi literami). System wtedy traktuje podaną nazwę jako nową (bo rozszerzenie ma inne znaki - małe litery), co pozwala mu zmienić jego długą nazwę na taką w postaci krótkiej (jeśli długa nazwa jest w zakresie krótkiej, krótka jest identyczna; plik ma jedną nazwę).

Powtarzam tylko jeszcze raz - nie ma takiej potrzeby, bo każdy plik zawsze posiada krótką wersję nazwy.

0
Szczawik napisał(a)

Nie zrozumiałeś - te pliki mają dwie nazwy (jednocześnie) - i w wersji krótkiej, na przykład (np.: PROGRA~1) i w wersji długiej (np. Program files). Jeśli program obsługuje długie, to zadziała i na krótkich, jeśli obsługuje tylko krótkie, to może z nich spokojnie korzystać.

Jak mimo wszystko zależy Ci na zmianie nazwy, to proponuję skrypt:

@echo off
for %%f in (*.txt) do ren "%%~nxf" "%%~nsf.txt"
echo.
pause

Plik jednocześnie posiada dwie nazwy; zatem wywołanie na przykład polecenia (załóżmy, że nazwy są prawidłowe):

ren "Plik z długą nazwą.txt" "PLIKZD~1"

nie przyniesie żadnego efektu, bo plik już posiada taką nazwę (bo posiada obie). Dlatego trzeba zmienić nazwę na inną (w przykładzie obcinam rozszerzenie *.txt przez brak przełącznika x w krótkiej nazwie i samodzielnie dodaję je od nowa - małymi literami). System wtedy traktuje podaną nazwę jako nową (bo rozszerzenie ma inne znaki - małe litery), co pozwala mu zmienić jego długą nazwę na taką w postaci krótkiej (jeśli długa nazwa jest w zakresie krótkiej, krótka jest identyczna; plik ma jedną nazwę).

Powtarzam tylko jeszcze raz - nie ma takiej potrzeby, bo każdy plik zawsze posiada krótką wersję nazwy.

Dzięki serdeczne za pomoc. Wyjaśnione na 5+

1 użytkowników online, w tym zalogowanych: 0, gości: 1