Taka ciekawostka, kazałem ChatGPT napisać skrypt batch wyświetlający TYLKO pliki, których ścieżka jest dłuższa niż 256 znaków, wynik powinien być zrzucony do pliku .txt. No i napisał. Działa pod warunkiem, że skrypt jest umieszczony w katalogu, który ma przeszukać:
Kod: Zaznacz cały
@echo off
setlocal enabledelayedexpansion
set "directory=d:\test" #Zastąp to właściwą ścieżką do katalogu, który chcesz przeszukać
set "output=wynik.txt"
if exist "%output_file%" del "%output_file%"
for /r "%directory%" %%F in (*) do (
set "file_path=%%F"
if "!file_path:~256!" neq "" (
echo !file_path! >> "%output%"
)
)
endlocal
Pewno można go zmodyfikować żeby mógł być umieszczony w dowolnym katalogu, można też pokusić się o to aby od razu skracał nazwy tych plików. Kto wie jakby to wyglądało w Pytonie. Ten ChatGPT nie jest taki głupi...
Edycja:
ChatGPT napisał skrypt w Pythonie znajdujący pliki, dla których ścieżka jest dłuższa niż 256 znaków, a następnie zmienia nazwy tych plików ucinając znaki od końca. Sprawdziłem, działa. Oryginalna odpowiedź ChatGPT:
W tym przykładzie należy zmienić wartość zmiennej target_directory na ścieżkę do katalogu, w którym chcesz zmieniać nazwy plików. Skrypt przechodzi przez wszystkie pliki w podanym katalogu i jego podkatalogach. Jeśli długość ścieżki pliku przekracza 256 znaków, tworzona jest nowa nazwa pliku z oryginalną ścieżką i odpowiednią ilością znaków od końca nazwy pliku (w tym przykładzie wycinamy ostatnie 10 znaków z nazwy pliku). Następnie pełna ścieżka dla nowej nazwy pliku jest tworzona przez połączenie oryginalnej ścieżki z nową nazwą pliku. Na końcu skrypt zmienia nazwę pliku na nową nazwę z zachowaniem pełnej ścieżki.
I skrypt Python:
Kod: Zaznacz cały
import os
def change_file_names(directory):
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
file_name, file_ext = os.path.splitext(file)
# Sprawdzanie długości ścieżki
path_length = len(file_path)
# Sprawdzanie, czy ścieżka jest dłuższa niż 256 znaków
if path_length > 256:
# Tworzenie nowej nazwy pliku z oryginalną ścieżką i odpowiednią ilością znaków od końca nazwy pliku
new_file_name = file_name[:-10] # Przykładowo: Wycinamy ostatnie 10 znaków z nazwy pliku
# Tworzenie pełnej ścieżki dla nowej nazwy pliku
new_file_path = os.path.join(root, new_file_name + file_ext)
# Zmiana nazwy pliku
print(f"Zmieniam nazwę pliku: {file_path} na {new_file_path}")
os.rename(file_path, new_file_path)
# Podaj ścieżkę do katalogu, w którym chcesz zmieniać nazwy plików
target_directory = r"C:\Sciezka\Do\Katalogu"
change_file_names(target_directory)
print("Skrypt zakończył działanie.")
Skrypt batch też napisał, ale u mnie nie działał, może coś skopałem. W każdym razie można się pobawić.
DS720+ | RAM Crucial 8GB DDR-2666 SODIMM | WD Red Pro 10TB / SSD WD RED SA500 1TB | Btrfs | 2x NVMe Intel Optane 16GB read SSD cache