fredag, januar 22, 2021

For loekke inden i for loekke (Batch)

Daily Rush Debat Programmering For loekke inden i for loekke (Batch)

  • Forfatter
    Emne
  • #0

    Sven_Bent
    Bruger
    25.996 indlæg
    Offline

    jeg er stodt lidt paa et issues paa at lave mien batch filers dynamisk multi threaded

    naar jeg prover at spawne sub batch filer for hvert cpu kommer jeg in en noget for loekke problematik

    min thread spawner ser saaledes ud:

    For /l %%t in (1,1,%NUMBER_OF_PROCESSORS%) do (
    copy %1 %1.thread.%%t.png
    echo tag > %1.%%t.tag
    echo for /l %%%%r in (1,1,%RandIt%) do ( >%1.pngmix.%%t.bat
    echo pngout %1.thread.%%t.png %1.tmp.%%t.png /r /force /f6 /kp >>%1.pngmix.%%t.bat
    echo Deflopt /b %1.tmp.%%t.png >>%1.pngmix.%%t.bat
    echo huffmix %1.thread.%%t.png %1.tmp.%%t.png %1.thread%%t.png >>%1.pngmix.%%t.bat
    echo del %1.tmp.%%t.png >>%1.pngmix.%%t.bat
    echo ) >>%1.pngmix.%%t.bat
    echo del %1.%%t.tag >>%1.pngmix.%%t.bat
    echo exit >>%1.pngmix.%%t.bat
    )

    Copy paste til notepad da det er lidt laenger en DR’s smalle skrive vindue

    afkoersle stopper med foelgende fejl:
    do was unexpected at this time.
    E:\Heroes> echo for /l %%r in (1,1,12) do ( >”059 – Man on Fire.pdf-001.png”.pngmix%t.bat

    det ser ud til den prover at afvikle den inderst for loekes paramet ved afvikling af dne ydre.

    jeg ved at fjerne jeg den ydre og strippe den til

    copy %1 %1.thread2.png
    echo tag > %1.2.tag
    echo for /l %%%%r in (1,1,%RandIt%) do ( >%1.pngmix2.bat
    echo pngout %1.thread2.png %1.tmp2.png /r /force /f6 /kp >>%1.pngmix2.bat
    echo Deflopt /b %1.tmp1.png >>%1.pngmix2.bat
    echo huffmix %1.thread2.png %1.tmp2.png %1.thread2.png >>%1.pngmix2.bat
    echo del %1.tmp2.png >>%1.pngmix2.bat
    echo ) >>%1.pngmix2.bat
    echo del %1.2.tag >>%1.pngmix2.bat
    echo exit >>%1.pngmix2.bat

    saa virker det fin men saa skal jeg manual lave det for hvert tcpu core i min batdchfil hvilket ikke er saa smart hvis jeg skal bruge min batch filer paa forskellige pc’ere

    Sven Bent - Dr. Diagnostic
    www.TechCenter.DK

Viser 6 kommentarer - 1 til 6 (af 6 i alt)
  • Forfatter
    Kommentarer
  • #1

    Sven_Bent
    Bruger
    25.996 indlæg
    Offline

    ok det er lidt nemmere at kigge her

    https://docs.google.com/document/d/1_TTYX2g0L3KFxZP02JUsKpreG5zaF3zSZo4JsruNV0s/edit

    Sven Bent - Dr. Diagnostic
    www.TechCenter.DK

    #2

    brwnx
    Bruger
    3.609 indlæg
    Offline

    Brug nu et rigtigt script sprog istedet…

    Og er du sikker på at det kører i flere tråde

    Læs det med småt

    #3

    CrackMaND
    Bruger
    1.078 indlæg
    Offline

    Powershell FTW

    May the source be with you

    #4

    Kolben
    Bruger
    18.939 indlæg
    Offline

    God damn, hvor er det grimt det dér. Jeg gider ikke, sorry

    P=NP?

    #5

    Fisker
    Bruger
    12.648 indlæg
    Offline

    #3 Powershell er rigtigt fedt, dog ikke så fedt når man opdager den one-liner man kan køre i PS4 ikke duer i tidligere versioner

    #6

    Sven_Bent
    Bruger
    25.996 indlæg
    Offline

    fandt en loesning.

    i stedet for at spawn X antal hardcoded sub batchfiler
    spawner jeg kun en some er dynamisk og kan kaldels med parametret for traad haandtering.

    echo for /l %%%%r in (1,1,%RandIt%) do ( >%1.pngmix.bat
    echo pngout %1.thread.%%1.png %1.tmp.%%1.png /r /force /f6 /kp >>%1.pngmix.bat
    echo Deflopt /b %1.tmp.%%1.png >>%1.pngmix.bat
    echo huffmix %1.thread.%%1.png %1.tmp.%%1.png %1.thread%%1.png >>%1.pngmix.bat
    echo del %1.tmp.%%1.png >>%1.pngmix.bat
    echo ) >>%1.pngmix.bat
    echo del %1.%%1.tag >>%1.pngmix.bat

    For /l %%t in (1,1,%NUMBER_OF_PROCESSORS%) do (
    Copy %1 %1.thread.%%t.png
    start %1.PNGmix.bat %%t
    )

    #4
    Helt enig meget at koderiet er for at styre multithreading af baade batch og programmerne samt at undgaa fil kollisioner ved multipel afkoersel af samme batch i samme folder.

    Havde det ikke varet problemet og jeg kunne gaa ud fra at folk kun koerte en udgave af gange kunne det reduceret meget og lave en simplere kode da jeg ikke havde brug for konsekvent at kalde %1 for hvert ting jeg spawner

    #2
    det du ser er kun trad spawneren. og ja jeg er 100 sikke paa det koere i flere traade eftersom de spawn flere commando vinduer til afvikling er diverse bat filere parallelt.

    fik det til at koere dynamisk nu saa det auto detecter cpu cores or fordele arbejdet ud ligeligt paa hvert cpu.

    Sven Bent - Dr. Diagnostic
    www.TechCenter.DK

Viser 6 kommentarer - 1 til 6 (af 6 i alt)
  • Du skal være logget ind for at kommentere på dette indlæg.