none
Vnorene cykly for

    Dotaz

  • Dobry den,

    muzete mi prosim pomoci? Napsal jsem si na zkousku "jednoduchy" skript, ktery by mel vypsat vsechny pripony souboru ze vsech disku, ale bohuzel nefunguje. Zkousel jsem ruzne tvary, ale vypada to, ze na miste %Disk% nesmi byt promenna, ale "konstanta". Alespon pri vypisu v cmd okne to tak vypada. Nevite kde delam chybu, nebo jak to obejit?

    Dekuje a pozdravuje Michal Karlik

    setlocal ENABLEDELAYEDEXPANSION

    Set Drivers=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

    For %%d In (%Drivers%) Do (If Exist %%d:\Nul ((Set Disk= | Set Disk=%%d)|(For /R %Disk%:\ %%f In (*.*) Do @Echo %%~xf)))

    For %%d In (%Drivers%) Do (If Exist %%d:\Nul ((Set Disk= | Set Disk=%%d:\)|(For /R %Disk% %%f In (*.*) Do @Echo %%~xf)))

    úterý 14. července 2015 20:17

Odpovědi

  • pro promenne, ktere se meni v slozenem prikazu (napr. cyklus) pouzij ! misto % (napovi setlocal /?, konkretne ENABLEDELAYEDEXPANSION)

    MP

    • Navržen jako odpověď Jan Chaloupek středa 15. července 2015 10:51
    • Označen jako odpověď Michal Karlík úterý 21. července 2015 20:25
    středa 15. července 2015 8:04
    Moderátor

Všechny reakce

  • Cislo disku se v druhem "for" cyklu dosadi, ale skript zkouma se pouze lokalni adresar. To vyplyva z testu, ktery jsem udelal.

    Zkuste prejit na Powershell a udelejte analogicky postup, ale s rekurzi. Bude to vypadat nejak takto ( jiste si skript upravite podle potreby):

    Get-Childitem -Recurse | Select-Object PSParentPath,Extension -Unique

    M.


    středa 15. července 2015 6:28
    Moderátor
  • pro promenne, ktere se meni v slozenem prikazu (napr. cyklus) pouzij ! misto % (napovi setlocal /?, konkretne ENABLEDELAYEDEXPANSION)

    MP

    • Navržen jako odpověď Jan Chaloupek středa 15. července 2015 10:51
    • Označen jako odpověď Michal Karlík úterý 21. července 2015 20:25
    středa 15. července 2015 8:04
    Moderátor
  • Dobry den,

    dekuji za snahu pomoci. I ja jsem delal testy… a z nich mi vyslo, ze prikaz "for /r d:\ %f in (*.*) Do Echo %~xf" je nejen korektni, ale opravdu mi vypise pripony VSECH souboru na disku d. A u mne to funguje jak na lokalni, tak i na namapovane sitove disky. Tak jsem z d:\ udelal promennou a oblozil ji dalsim cyklem…

    Powershellu bych se rad vyhnul, aby to fungovalo i na XP bez instalovaneho pws.

    MK

    středa 15. července 2015 11:37
  • Dobry den,

    dekuji za snahu pomoci. Budu dále tunit, snad se to povede.

    MK

    středa 15. července 2015 11:39
  • Az se zadari, ozvete se zde a oznacte odpoved, abychom mohli uzavrit tento pripad.

    M.

    středa 15. července 2015 19:01
    Moderátor
  • Bylo by dobre uvest zde vysledek snazeni a oznacit odpoved, ktera vedla k fungujicimu skriptu.

    M.

    pondělí 20. července 2015 6:09
    Moderátor
  • Dobry den/vecer,

    v kazdem pripade jsem po vyreseni "postnu" spravne reseni, ale ted mne dohani teplota a jine terminy. Klidne vlakno uzavrete, jsem v necem takovem poprve.

    Pripadne dam reseni do naslednika tohoto vlakna.

    MK

    úterý 21. července 2015 20:30