PowerShell i pliki wsadowe z danymi wejściowymi użytkownika

0

OK najpierw dzięki nex84 za udzielenie odpowiedzi na moje ostatnie pytanie i na wszystkie te, które dały wkład, również na ten link https://superuser.com/a/1051727/569550 ...

Mam teraz nowe pytanie, ale wiąże się ono z tym samym kodem, co ten w linku.

Stworzyłem skrypt, który usunie tekst z nazwy pliku i zastąpi go nowym tekstem lub spacją.

Zostało to stwierdzone w ostatnim pytaniu po linku, który podałem. Dodałem dane wejściowe użytkownika, aby użytkownik mógł wpisać, co tekst ma zostać usunięty i co chce dodać.

Dostaję poprawną część usuwania, ale mam problem z dodaniem nowego tekstu do nazwy pliku. Jakieś sugestie...

Poniższy kod działa dla usuniętego, ale gdy zmiana nazwy pojawia się w skrypcie, dodaje „$ Zmień nazwę” do nazwy pliku zamiast tego, co wprowadza użytkownik.

Przykład: jeśli użytkownik usunął „-Layout1”, ale dodaje „-Model” do nazwy pliku, otrzymujemy:

BLABLA-Layout1.pdf ==>  BLABLA$Replace.pdf

Kod:

CD C:\TempPDF 
$Filter = Read-Host -Prompt 'Input Text To Be Removed' 
$Rename = Read-Host -Prompt 'Input Text To Be Added' 
Write-Host "You input server '$Filter' and '$Rename'" 
Get-ChildItem -Filter "*$Filter*" -Recurse | Rename-Item -NewName {$_.name -replace "$Filter",'$Rename' }
Christopher
źródło

Odpowiedzi:

1

Pojedyncze cudzysłowy w Powershell ograniczają tylko wartości ciągu. W takim przypadku należy użyć cudzysłowów podczas przekazywania zmiennej $ Zmień nazwę na nazwę pliku.

Get-ChildItem -Filter "*$Filter*" -Recurse | Rename-Item -NewName {$_.name -replace "$Filter","$Rename" }
bbatman
źródło
Idealny. Dzięki za szybką odpowiedź. To działa teraz doskonale. Wszystko, co muszę teraz zrobić, to zawinąć go w exe i mogę go rozesłać do moich współpracowników. Jesteście niesamowici! Dzięki jeszcze raz.
Christopher
Ten kod pozwala mi odejść od pobierania wszystkich narzędzi do zmiany nazw. Dzięki jeszcze raz.
Christopher