Skrypt systemu Windows do uruchomienia jako partia w celu zamiany znaku na liście nazw plików


2

Mam 4 pliki, jak poniżej:

C:\Documents and Settings\vm\AC R\test

JE.BOS.20130516.CSV
JE.BES.20130516.CSV
KFROPN.SAVEFILE.CSV
KFBAD.SAVEFILE.CSV

W "."nazwie pliku muszę zastąpić "-". Ale rozszerzenie .CSVpowinno pozostać takie samo.

1) Wykonałem poniższe polecenie i dostałem błąd jak poniżej:

for /f "tokens=1*delims=." %%i in ('dir /a-d/b *.*.CSV') do ren "%%~i.%%~j" "%%~i-%%~j"

Błąd:

C:\Documents and Settings\vm\AC R\test>for /f "tokens=1*delims=." %%
i in ('dir /a-d/b *.*.CSV') do ren "%%~i.%%~j" "%%~i-%%~j"
%%i was unexpected at this time.

2) Usunąłem jeden% przed i i wykonałem jak poniżej:

for /f "tokens=1*delims=." %i in ('dir /a-d/b *.*.CSV') do ren "%%~i.%%~j" "%%~i-%%~j"

i otrzymałem błąd, jak poniżej:

C:\Documents and Settings\vmeruga\ACCESS RECS\test>for /f "tokens=1*delims=." %i
 in ('dir /a-d/b *.*.CSV') do ren "%%~i.%%~j" "%%~i-%%~j"

C:\Documents and Settings\vmeruga\ACCESS RECS\test>ren "%JEFFERIES.%BODPOS.20130
516.CSV" "%JE-%BODPOS.20130516.CSV"
The system cannot find the file specified.

C:\Documents and Settings\vmeruga\ACCESS RECS\test>ren "%JEFFERIES.%BODTRADES.20
130516.CSV" "%JE-%BODTRADES.20130516.CSV"
The system cannot find the file specified.

C:\Documents and Settings\vmeruga\ACCESS RECS\test>ren "%KFBAROPN.%SAVEFILE.CSV"
 "%KFOPN-%SAVEFILE.CSV"
The system cannot find the file specified.

C:\Documents and Settings\vmeruga\ACCESS RECS\test>ren "%KFBARTRD.%SAVEFILE.CSV"
 "%KFBARTRD-%SAVEFILE.CSV"
The system cannot find the file specified.

Uważam, że pierwsza próba powinna zadziałać, jeśli umieścisz ją w pliku wsadowym. Aby uruchomić go interaktywnie, zmień wszystkie wystąpienia %%na %.
— Scott

@ Scott: Pierwsze polecenie otrzymał od odpowiedzi na poprzednie pytanie . Jest to wyraźnie niepoprawne dla podanych tutaj nazw plików i zastąpi tylko pierwszy okres, wypróbuj go i zobacz.
— Karan

@Karan: «Muszę zamienić "."nazwę pliku na "-".» OK, przypuszczam, że może to oznaczać, że chce zastąpić wszystkie kropki (przed rozszerzeniem). Uważam jednak, że pytanie jest dwuznaczne. Zinterpretowałem to w ten sposób, że pierwszy okres był jedynym, który chciał zmienić, a PO nie mówi nic, by to wyjaśnić.
— Scott

@Scott: Cóż, zakładam, że opublikował to, ponieważ rozwiązanie, które zastępuje pierwszy okres, nie spełniło oczekiwań. Mimo to masz rację, trochę wyjaśnienia nie zaszkodzi.
— Karan

Uważam, że „rozwiązanie, które zastępuje pierwszy okres, nie zrobiło tego, co chciał”, ponieważ wpisał je interaktywnie %%izamiast %i, itd.… --– zobaczyć komunikat o błędzie, który zgłosił.
— Scott

Odpowiedzi:


2

Proszę, zapisz następujące jako plik .BAT i uruchom:

@setlocal enabledelayedexpansion&&for /f %%a in ('dir /b *.csv') do @set fn=%%~na&&set fn=!fn:.=-!&&ren "%%a" "!fn!%%~xa"

Karan Po uruchomieniu tego skryptu z katalogu testowego działa. Co jeśli chciałbym uruchomić go z dowolnego katalogu / ścieżki. Muszę wspomnieć o nazwie ścieżki w skrypcie! Czy możesz mi powiedzieć, gdzie mam zmodyfikować skrypt, aby określić ścieżkę jako „c: \ test \”
— user225817,

@ user225817: Prosty cd /d "drive:\path\to\dir"jak pierwszy wiersz zabierze Cię do katalogu, w którym chcesz uruchomić resztę partii, ale myślę, że już to wymyśliłeś. Możesz zaakceptować odpowiedź, klikając pusty zielony znacznik wyboru po lewej stronie. Zostanie wypełniony po kliknięciu.
— Karan

0

spróbuj tego, spójrz na wynik i usuń słowo echo, jeśli jest w porządku:

@echo off & setlocal
cd / d „C: \ Documents and Settings \ vm \ AC R \ test”
dla %% i w (*. *. csv) wykonaj (
    ustaw „fname = %% ~ ni”
    setlocal włączony opóźniony rozwój
    ustaw "nname =! fname:. = -!"
    echo zmień nazwę „! fname! .CSV” „! nname! .CSV”
    endlocal
)

Endoro. Próbowałem powyższego skryptu umieszczając plik wsadowy, nie jestem pewien, czy powinienem umieścić plik wsadowy, czy uruchomić w linii Coomada. Jako plik wsadowy nie widziałem wyników. Dziękujemy za poświęcony czas na ten problem.
— user225817
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.