Jak rekurencyjnie obcinać nazwy plików i katalogów w PowerShell?

0

Podczas próby skopiowania plików wokół dysku sieciowego pojawia się błąd, który mówi, że operacja kopiowania kończy się niepowodzeniem i generuje komunikat informujący, że ścieżka (nazwa pliku) jest za długa. Wiadomość sugeruje również, że skrócę nazwę pliku i spróbuję ponownie skopiować. Problem polega na tym, że mam setki plików i folderów, które mają naprawdę długie nazwy i potrzebują skryptu, aby zmniejszyć długość wszystkich z nich, tak że około 100 znaków (mają spacje w nazwach i nawiasach). Chcę tylko skrócić wszystko, co jest dłuższe niż 100 znaków, do 100 znaków. Muszę się również upewnić, że rozszerzenia plików nie zostały usunięte lub zmienione. Nie jestem zbyt silny w PowerShell, więc cała pomoc jest doceniana.

will
źródło
1
Może to być dość skomplikowane, ponieważ po prostu obcinasz nazwy plików, możesz skończyć z duplikatami. Czy same nazwy plików są problemem, czy też cała ścieżka jest zbyt długa? Jeśli masz także długie nazwy katalogów, dlaczego by nie zacząć?
Charles Burge
@Charles Burge Nazwy plików są unikalne po pierwszych 15 znakach; ludzie w moim miejscu pracy po prostu cieszą się nadmiernie opisowym tytułem, dlatego staram się znaleźć najprostsze rozwiązanie. Wiem, że wiele folderów ma naprawdę długie nazwy, ale niektóre pliki są tak bezpieczne, że staram się być bezpieczny dla obu. Byłbym w porządku, gdybym miał rozwiązanie, które zmieniło nazwy katalogów niezależnie od nazw plików.
will
Czy próbowałeś już czegoś, czy chcesz, żebyśmy napisali dla ciebie skrypt?
Charles Burge
Szczerze mówiąc, nie próbowałem niczego. Pomyślałem, że będzie to obejmować wyrażenia regularne i pewne użycie GREP (lub jego odpowiednika dla Windows) i jestem przez nich zastraszany. Więc jeśli ktoś ma już rozwiązanie lub wie o prostym rozwiązaniu, które byłoby niesamowite. Google nie znalazł dla mnie dobrych rozwiązań, ale może nie szukam właściwej rzeczy.
will
Proszę to zanotować superuser.com nie jest bezpłatną usługą pisania skryptów / kodu. Jeśli powiesz nam, co próbowałeś do tej pory (dołącz skrypty / kod, którego już używasz) i gdzie utknąłeś, możemy spróbować pomóc w określonych problemach. Powinieneś także przeczytać Jak mogę zadać dobre pytanie? .
DavidPostill