code:
1
| FOR /F %%i IN (..\fileservers.ini) DO FOR /F "delims==" %%j IN ('dir \\%%i\users /b') DO echo %%i %%j && DIR "\\%%i\users\%%j" /b |grep -ico [a-Z0-9] |
fileservers.ini is een bestandje met alle fileservers in ons domain, de output geeft het aantal subdirs onder iedere userdir op elk van die fileservers.
Door hierachter nog een pipe te geven (naar perl of awk) die de afwijkingen van het normale aantal geeft weet ik in 1 keer waar er per ongeluk subdirs staan die er niet horen.
Mijn grootste probleem tot dusver is de beperking van de inputfile/commando voor FOR. Normale files (fileservers.ini) of commando's ('net view') werken wel, maar bijvoorbeeld de naar grep gepipe-te output van cluster.exe ('cluster %1 resource /list |grep print') werkt helaas niet.
Mijn conclusie: cmd.exe zal het nooit halen bij de bash (of elke andere *nix) shell, maar met goed gebruik van alle tools die ook voor NT/2K beschikbaar zijn (cat head tail awk perl sort find grep uniq wc etc.) kom je een aardig eind.
Jammer dat niet alle tools gewoon input van en naar STDIN/STDOUT accepteren en produceren, dat zou het leven van de scriptende NT-admin een stuk makkelijker maken.
(note: bovenstaand voorbeeld van cluster.exe is uit het hoofd en niet perse kloppend, als iemand echt wil kan ik het preciese probleem ook wel posten.)
Whenever you find that you are on the side of the majority, it is time to reform.