Zástupné znaky (*,?) v příkazové řádce
Příkaz DIR - Chci vypsat všechny soubory, které obsahují řetězec "zip" v názvu souboru. Zadám příkaz:
dir dir *zip*.* /s /b
Bohužel jsou vypsány i soubory, které řetězec "zip" v názvu souboru vůbec neobsahují, ale mají příponu .zip, např. soubor "ownerdrawn_menus.zip"
Pokud ale zadám příkaz XCOPY, např.:
xcopy *zip*.* d: /s
vše funguje jak má.
Proč se příkaz DIR chová tak nelogicky, když jinde je to správně?
OS: Windows 10 Home, Windows 7 Pro - 64bit
Protože DIR neumí zpracovat tři hvězdičky.
To je možné. Když ale jednu uberu a zadám příkaz:
dir *zip*. /s
který by měl vypsat všechny soubory, které obsahují v názvu "zip" a jsou bez přípony, tak je výsledek stejný. Výslededk s XCOPY opět správně.
Tedy DIR nezpracuje ani 2 hvězdičky? Tuším, že počtem hvězdiček to není.
DIR, COPY ad. fungují v tomto ohledu stejně (špatně), jsou to interní příkazy OS (cmd.exe). Zatímco XCOPY je externí příkaz. Spíš než počet hvězdiček, je jinak dělaná implementace zástupných znaků v interních a externích příkazech. Bohužel, ty interní jsou v tomto ohledu asi nepoužitelné.
druhá hvězdička už "bere vše"
edit: interní/externí platilo v dobách DOS/Win9x. U NT je to vše emulace a osobně doporučuju tyto složitější věci řešit přes VBS nebo PS.
TAdy se zabývají implementací wildcards a problémům s tečkou.
https://blogs.msdn.microsoft.com/oldnewthing/20071 217-00/?p=24143