Zmień nazwę plików w skrypcie wsadowym

-1

Próbuję zmienić nazwę wszystkich plików w folderze za pomocą skryptu wsadowego, ale otrzymuję niepoprawny błąd składniowy, którego nie mogę zidentyfikować:

for %%f in (%Source%\*DebugLog.Config) do %%f ren %%f "%Source%\%ProjectName%.*DebugLog.Config"

Pomysł polega na tym, że poprzedzam dowolny plik kończący się DebugLog.Config, tak aby stał się on „projectName.DebugLog.Config”

Gdzie to idzie źle?

BatFileNewbie
źródło
Proszę jasno określić swój cel. Nie zidentyfikowano kryterium zmiany nazw plików (nazwy muszą być unikalne dla każdego folderu). Gwiazdki, których użyłeś, nie mają sensu
SΛLVΘ

Odpowiedzi:

2

Dostaję niepoprawny błąd składniowy, którego nie mogę zidentyfikować

for %%f in (%Source%\*DebugLog.Config) do %%f ren %%f "%Source%\%ProjectName%.*DebugLog.Config".

W pliku wsadowym jest kilka błędów (z czego 2 popełniłem sam).

Jak mi wskazano komentarze gdzie indziej przez debenham :

Cel REN nie może zawierać dysku ani ścieżki. Musi być tylko nazwą i rozszerzeniem

Użycie prostego FOR wiąże się z ryzykiem zmiany nazwy pliku więcej niż jeden raz - nie jest dobra :-( Lepiej używać FOR / F z DIR / B

Zobacz jego odpowiedź dodaj „tekst” na końcu wielu nazw plików więcej wyjaśnień powyżej.

Dodatkowo do %%f jest bez znaczenia, powinno być sprawiedliwe do.

Oto działający plik wsadowy:

@echo off
pushd %source%
for /f "delims= eol=:" %%f in ('dir /b /a-d *DebugLog.Config') do ren "%%f" "%ProjectName%.%%f"
popd

Dalsze czytanie

  • Indeks A-Z wiersza polecenia Windows CMD - Doskonałe odniesienie dla wszystkich rzeczy związanych z linią Windows cmd.
  • reż - Wyświetl listę plików i podfolderów.
  • dla / f - Polecenie pętli przeciwko wynikom innego polecenia.
  • popd - Zmień katalog z powrotem na ścieżkę / folder ostatnio zapisany przez polecenie PUSHD.
  • pushd - Zmień bieżący katalog / folder i zapisz poprzedni folder / ścieżkę do użycia przez polecenie POPD.
  • ren - Zmień nazwę pliku lub plików.
DavidPostill
źródło
0

To idzie źle w więcej niż jednym miejscu. Zarozumiały %Source% kończy się ukośnikiem odwrotnym (edycja: wygląda na to, że nie, więc dodanie ukośnika odwrotnego :)

for %%f in (%Source%\*DebugLog.Config) do ren "%%f" "%ProjectName%.%%~nxf"

Cel ren nie może zawierać ścieżki, więc %%~nxf wyodrębnia nazwę i rozszerzenie %%f.

ths
źródło