davkovy soubor prikaz FOR

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Zdenoch 19. 1. 2017 10:45

Ahoj, prosim o radu. Mam davku, ktera mi podle seznamu v TXT vyhleda soubory ve slozce A a zkopiruje do slozky B. Funguje pro cisla, pismena, ale nefunguje, pokud nazev obsahuje mezeru. Prosim jak to osetrit? Nize je cely zapis.

for /f "tokens=*" %%a in (seznam.txt) do (
pushd "D:\A"
copy %%a****.jpg "D:\B"
)
Diky Zdenek
Zdenoch
Kolemjdoucí

Odeslat příspěvekod Just_jo 19. 1. 2017 11:19

A uvozovky by nepomohli?
Kód: Vybrat vše
...
copy "%%a****.jpg" "D:\B"
...
Just_jo
Junior
Uživatelský avatar

Odeslat příspěvekod Zdenoch 19. 1. 2017 11:36

uaaaaaaaa
pomohlo, diky moc
Zdenek
Zdenoch
Kolemjdoucí

Odeslat příspěvekod Pytlík 19. 1. 2017 13:05

Pozor ale na jednu věc: Na řádcích seznamu se mohou již vyskytovat uvozovky, takže přidání dalších může rovněž vést chybám. Obejde se to tak, že se dá vlnovkou (tildou) pokyn k vynechání všech uvozovek v proměnné %%a a doplnit svoje. Takže ten řádek s copy by měl vypadat takto:

copy "%%~a*.jpg" "D:\B"

Pozn.: Ta čtyřnásobná hvězdička (*) je zbytečná, stačí jedna, protože každá hvězdička zastupuje řetězec libovolné, i nulové (nebo velmi velké) délky.
Pokud jsi ale chtěl dát najevo, že tam musí být alespoň 4 znaky, tak napíšeš ????*
Pytlík
Pokročilý
Uživatelský avatar

Odeslat příspěvekod Zdenoch 19. 1. 2017 13:52

Diky za upozorneni, kdyz jsme u poctu znaku, k dokonalosti chybi, toto:
1) soubory s cislem v nazvu se zkopiruji i ve variantach (napr. 5810679.jpg, 5810679_1.jpg, 5810679_2.jpg, ...)
2) soubory zacinajici na PRANI se zkopiruji pouze ty s presnym nazvem (PRANI T 25.jpg, ale uz ne PRANI T 258)

Zd
Zdenoch
Kolemjdoucí

Odeslat příspěvekod Pytlík 19. 1. 2017 22:49

Protože nevím, jak je napsán seznam.txt, tak těžko něco radit.
Pytlík
Pokročilý
Uživatelský avatar

Odeslat příspěvekod Zdenoch 20. 1. 2017 08:40

zapis v txt vypada napr. takto

5810679
2361124
PRANI T 25
PRANI O 165
Zdenoch
Kolemjdoucí

Odeslat příspěvekod Pytlík 20. 1. 2017 12:58

Chybu tam nikde nevidím, snad jestli se ti někam nevloudila nepatřičná mezera, o které nevíme.
Pytlík
Pokročilý
Uživatelský avatar

Odeslat příspěvekod Zdenoch 20. 1. 2017 14:07

problem je v tom, ze bych chtel, aby u polozky PRANI T 25 zkopiroval pouze PRANI T 25.jpg, ale ne PRANI T 258.jpg nebo PRANI T 2531.jpg nebo dalsi varianty.
Zdenoch
Kolemjdoucí

Odeslat příspěvekod Pytlík 20. 1. 2017 17:23

uvědom si funkci zástupných znaků:
* - řetězec libovolné, tedy i nulové délky
? - jeden libovolný znak, který tam ale musí být
Takže, když chceš, aby se kopírovalo cokoliv, co začíná na PRANI T 25, tak to bude vypadat
PRANI T 25*.jpg
Pokud chceš, aby se kopírovalo jenom to PRANI T 25, tak
PRANI T 25.jpg
A pokud budeš chtít, aby se kopírovalo cokoliv, co takto začíná, ale obsahuje i další znaky, tak
PRANI T 25?*.jpg
Pytlík
Pokročilý
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků