Hirdetés

Keresés

Új hozzászólás Aktív témák

  • csaszizoltan
    csendes tag

    Sziasztok!
    Előre is leszeretném szegezni, hogy nem konyítok a programozáshoz. :D
    Egy játékot, és a hozzá tartozó trainert szeretnék egy időben, 1 ikonnal futtatni, a lehetőlegjobban leegyszerűsítve.
    A trainer segítségével tudok csatlakozni más játékosokhoz. A Trainer-t pedig az F3 billentyűvel aktiválom.
    Majd a játék konzoljába kell beírnom a szerver ip címét.
    Ezt eddig úgy sikerült leegyszerűsítenem, hogy létre hoztam egy .bat file-t, amiben a következők vannak:

    CLIP > CONNECT.TXT
    start "Privat Client" "D:\Games\xyz\xyz Privat Client trainer.exe"
    start "xyzmp" "D:\Games\xyz\xyzmp.exe"

    A coonect.txt-ben a szerver ip címe van, amit egyből másolással vágólapra tesz, és így a játék betöltése után csak F3-mat kell nyomnom, majd a konzolt előhoznom, és abba beillesztenem az ip-t ctrl v-vel, majd enter.

    A kérdésem az lenne, hogy az megoldható valahogy, hogy a két exe betöltődése után automatikusan megtörténjen az f3 gomb lenyomása?

    Szóval bele lehet azt valahogy írni a scriptbe, hogy automatán aktiválja a trainert?

    A választ, segítséget előre is köszi! :R

    Szia!
    Hozz létre egy "F3.vbs" visual basic script filet az alábbi tartalommal:

    F3.vbs
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.SendKeys "{F3}"

    majd illeszd be az F3.vbs sort a batch fileodba így:
    (a clip parancs után az általad megadottól eltérően a másik irányba kell állni a csibecsőrnek :)
    és a connect txt csak az ip címet tartalmazhatja és nem lehet utána - mármint az ip cím után - benne enter )

    CLIP < CONNECT.TXT
    start "Privat Client" "D:\Games\xyz\xyz Privat Client trainer.exe"
    start "xyzmp" "D:\Games\xyz\xyzmp.exe"
    F3.vbs

    Ha a konzolt is lehet billentyűparanccsal előhozni, azt is lehet vbs file-lal irányítani, majd ugyanígy a ctrl-v-t is, részletek itt.

    elképzelhető hogy az F3.vbs legelejére be kell illeszteni egy (több) másodperc várakozást 1000 millisecundummal képezve, hogy a játék betöltődése megtörténjen
    WScript.Sleep 1000

  • csaszizoltan
    csendes tag

    Köszönöm szépen! Az a baj, hogy nem lenne rossz ,de nem működik. Se a filet nem nevezi át, és még meg is kérdezi, hogy fileval vagy directoryval akarok-e foglalkozni. Nekem egy teljesen automatazitált dolog kéne, ami szó nélkül átrángatja a forrásból a célkönyvtárba a másik filet, de mielőtt ezt megtenné, a célkönyvátrban lévő már létező (ugyan olyan nevű filet átnevezné a mai dátumra, órára percre stb). és így akár hányszor rányomnék, csinálna egy backupot a fileból.

    Ha magyar nyelvű az oprendszer, akkor a set today sor helyesen

    set today=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%

    Ha tized és század másodpercet is akarsz, akkor

    set today=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%

    Ha angol nyelvű az oprendszer akkor házifeladat az alábbi szabály figyelembevételével

    %date:~a_kimetszendő_string_kezdőpozíciója_nullával_kezdve_a_számlálást,a_kimetszendő_string_hossza%

  • csaszizoltan
    csendes tag

    szia,

    köszi szépen, de sajnos nem működik ezzel (1. sorral)

    A 2. és 3. sort is próbáld ki légyszi.

  • csaszizoltan
    csendes tag

    Sziasztok,

    tudnátok segíteni az alábbi problémával?

    Nagyvállalati környezet, sima user vagyok a gépen, semmi admin jogom nincs, Win10 Enterprise fut.
    A default böngésző sajnos az Explorer, ezt szeretném átállítani Chrome-ra. Ezt meg is tudom tenni, működik is, viszont a házirend miatt minden újraindítás után visszaáll Explorerre.

    Tudnátok segíteni egy kis batch parancssal, amit egy kattintással meg tudok futtatni és nem kell a gépházban szórakoznom vele minden alkalommal?

    Esetleg excel VBA-val is meg tudnám hívni ezt a bat fájlt valahogy? Úgy még jobb lenne.

    köszi!

    C:\Users\Username\AppData\Local\Google\Chrome\Application\chrome.exe --make-default-browser
    C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --make-default-browser
    C:\Program Files\Google\Chrome\Application\chrome.exe --make-default-browser

    Az első sorban a pathban a username-t át kell írni a sajátra

    Valamelyikre működhet, ha van jogosultságod ehhez, a többi sort gyomlálni kell.

  • csaszizoltan
    csendes tag

    Igen igen, ez remekül bevált, köszönöm ismét :R

    Infó: számomra a 120sec még sok is (gyakoriságot tekintve), mivel kb 3-4 naponta érkezik oda bármi (sőt, van, hogy egy hétig semmi). Ezért is került nagyon perifériára és vagyunk hajlamosak megfeledkezni róla. Ezért már az is jó, ha 1-2óránként végez ellenőrzést.
    De egyébként a 120sec is kiváló. Szépen csendben elvan a háttérben, ha pedig érkezik valami, már dobja is az ablakot a képernyőre.
    Startup mappába bedobtam, géppel indul, törődésmentes :)

    Sajnos még ez sem tökéletes, ugyanis ha a abban a két perc végén a for ciklus alatt két (több) file is érkezik, akkor elképzelhető, hogy azokról nem tesz említést a modal window, csak az elsőnek felderítettről.
    Ha jobban belegondolok, akkor nem szól a windows indulás előtt készültekről sem, tehát az éjszaka ill. munkaidőn kívül érkezett file-okról sem.
    A több file érkezésének problémára megoldás lehet konkrétan ebben a programban, hogy a TIMEOUT értékét valami kis értékű prímszámra állítjuk (pontosabban relatív prím 60-ra), mondjuk 19-re , hogy még véletlenül se hangolódjon össze a batch ciklusa a percekkel (ami ebben a batchben a file-ok időpontossága) és akkor el kell viselni azt, hogy egy pdf érkezéséről többször is értesít esetleg egy két percig, de akkor sokkal biztosabb az értesítés.
    Azonban sajnos most én kimerültem evvel a problémával (új kódok készítése) kapcsolatban.

  • csaszizoltan
    csendes tag

    Nem terheli be nagyon a végtelen ciklus? Nem lenne elég csak 30-60mp-enként lefuttatni?

    A TIMEOUT parancs a 120-as értékkel pont két percig vár, meg se röccen tőle a proci.
    És jobb mint a PING-es sleep, mert nem kell hozzá internet, bár az meg millisec-et tud.

  • csaszizoltan
    csendes tag

    Windows 7 sajátosságok vannak benne (Chrome path)
    Magyar rendszer szükséges a helyes ISO formátumú dátum idő sorrend érdekében.
    Chrome-ot indít a pdf-fel vagy egy tabot ha már fut a chrome, szerintem Firefox is tudja a pdf-et megnyitni, de nem néztem utána.
    Lehetséges sajnos lyuk ebben a megoldásban ( A For ciklus után, de még a SET STAMPTIME előtt érkezik a pdf és közben percváltás történik)
    A Timeout parancsban a 120 azt jelenti, hogy 120 másodpercig vár, vagyis az egész bat file ennyi időnként vizsgál újra, feltétlenül átírandó a kedvelt értékhez (de nagyobb legyen mint 1 perc a helyes egyszeri értesítés miatt).
    Az :ERTESITES részben kicserélhető saját megoldásra a Chrome indítás helyett (az :ERTESITES és GOTO :EOF sor nem törlendő, csak a Chrome indítása helyettesítendő)

    @ECHO OFF
    :LOOP
    SetLocal EnableDelayedExpansion
    SET STAMPTIME="%DATE% %TIME%"
    SET STAMPTIME=%STAMPTIME:~0,18%"
    TIMEOUT /T 120 /NOBREAK
    FOR /R %%A IN (*.pdf) DO (
    SET FILETIME="%%~tA"
    IF %STAMPTIME% LEQ %FILETIME% CALL :ERTESITES "%%A" %FILETIME%
    )
    EndLocal EnableDelayedExpansion
    GOTO :LOOP
    GOTO :EOF

    :ERTESITES
    %USERPROFILE%\AppData\Local\Google\Chrome\Application\chrome.exe %1
    GOTO :EOF

    Ez a kód #817 nem működik, helyette ez készült, végfelhasználónál kipróbáltan

    @ECHO OFF
    CLS
    :LOOP
    SETLOCAL ENABLEDELAYEDEXPANSION
    SET STAMPTIME="%DATE% %TIME%"
    SET STAMPTIME=%STAMPTIME:~0,18%"
    TIMEOUT /T 120 /NOBREAK
    FOR /R "Drive:\Path" %%A IN (*.PDF) DO (
    IF %STAMPTIME% LEQ "%%~tA" CALL :ERTESITES "%%A" "%%~tA"
    )
    ENDLOCAL ENABLEDELAYEDEXPANSION
    GOTO :LOOP

    :ERTESITES
    SETLOCAL
    SET MSG="tempmsg.vbs"
    ECHO MsgBox "Pdf erkezett: %~1", vbSystemModal Or vbExclamation, "Pdf erkezett" >%MSG%
    WSCRIPT.EXE /I %MSG%
    DEL %MSG% >NUL
    GOTO :EOF

  • csaszizoltan
    csendes tag

    Nagyon szuper, köszönöm :R

    Már ez is nagyszerű, de chrome helyett egy sima echo (alert) ablak nem tud működni?

    Ja meg a másik problem, hogy szerveren van az érintett könyvtár, nem helyi gépen.
    Hol tudom megadni a vizsgálathoz szükséges elérési utat? :B

    A pontos szintaktika, aminak hatására a megadott path-on nézi a pdf-eket:

    FOR /R [drive:[path]] %%A...

    sajnos nincs hálózatom és benne gyakorlatom így nem tudom kipróbálni, hogy a drive.path helyébe mit is kell írni, ha hálózati helyet akarunk, de valami ilyesmit sikerült kiderítenem (esetleg idézőjelek közé zárva, ha a path-ban space van):

    FOR /R "\\számítógépnév\Path" %%A...

    Hogy megszólaljon a gép ahhoz ennyi elég a megoldásomban (nem jó a csak ^G, hanem control és g billentyű egyidejű lenyomása kell)

    :ERTESITES
    ECHO <ctrl-G><ctrl-G><ctrl-G><ctrl-G>
    GOT :EOF

    A chrome-os megoldásomban az lehet a jó, hogy fel kell számolni a tabokban elhelyezkedő pdf-ket, így kikerülhetetlenek maradnak a pdf-ek, de biztos megvan a saját pdf nézegetőtök, azt be kell csak helyettesíteni a chrome path helyébe, ha nem egyszerű, írjál rám privát, megoldjuk.

  • csaszizoltan
    csendes tag

    Sziasztok!

    Egy olyan batch file-ra lenne szükségem, ami értesítést küld, ha adott könyvtárba file kerül.
    (Szerveren egy könyvtárba kerülnek fel a faxon beérkezett, PDF-be mentett adatok, de ezek néha elkerülik a figyelmünket. Semmi extra elvárás nincs, csak jelezzen új beérkezés esetén).

    Első körben arra gondoltam, számlálhatná a fileokat és változás esetén jelez. De ha két számlálási ciklus között valaki esetleg töröl egy régebbit, de beérkezik egy új, akkor arról nem fog jelezni.
    Nem tudom, hogy módosítás dátumával lehet valamit kezdeni - pl. aznapi dátummal érkező file-ok esetén dobjon egy ablakot/emailt/csipogjon, mindegy.

    Van erre lehetőség?
    Próbáltam keresni, bár nem egyszerű, így ha már volt hasonlóról szó, nekem annak a hozzászólásnak a linkje, száma is elég (vagy hogy nagyjából mikori hozzászólások környékén kutakodjak).

    Köszi előre is.

    Szerk:
    Sőt, jobban belegondolva (ha az egyszerűbb), az is elég, ha PDF kiterjesztéssel file-t érzékel, akkor dob egy jelzést. Mivel utána úgyis áthelyezzük a beérkezett file-okat a megfelelő könyvtárakba.

    Windows 7 sajátosságok vannak benne (Chrome path)
    Magyar rendszer szükséges a helyes ISO formátumú dátum idő sorrend érdekében.
    Chrome-ot indít a pdf-fel vagy egy tabot ha már fut a chrome, szerintem Firefox is tudja a pdf-et megnyitni, de nem néztem utána.
    Lehetséges sajnos lyuk ebben a megoldásban ( A For ciklus után, de még a SET STAMPTIME előtt érkezik a pdf és közben percváltás történik)
    A Timeout parancsban a 120 azt jelenti, hogy 120 másodpercig vár, vagyis az egész bat file ennyi időnként vizsgál újra, feltétlenül átírandó a kedvelt értékhez (de nagyobb legyen mint 1 perc a helyes egyszeri értesítés miatt).
    Az :ERTESITES részben kicserélhető saját megoldásra a Chrome indítás helyett (az :ERTESITES és GOTO :EOF sor nem törlendő, csak a Chrome indítása helyettesítendő)

    @ECHO OFF
    :LOOP
    SetLocal EnableDelayedExpansion
    SET STAMPTIME="%DATE% %TIME%"
    SET STAMPTIME=%STAMPTIME:~0,18%"
    TIMEOUT /T 120 /NOBREAK
    FOR /R %%A IN (*.pdf) DO (
    SET FILETIME="%%~tA"
    IF %STAMPTIME% LEQ %FILETIME% CALL :ERTESITES "%%A" %FILETIME%
    )
    EndLocal EnableDelayedExpansion
    GOTO :LOOP
    GOTO :EOF

    :ERTESITES
    %USERPROFILE%\AppData\Local\Google\Chrome\Application\chrome.exe %1
    GOTO :EOF

  • csaszizoltan
    csendes tag

    Notepad++ használtam szerkesztésre. Korábban próbáltam a notepadot is, azzal felülírni a fájlt de ezek szerint valami hiba történt nem írta megfelelően felül.
    Most létrehoztam egy új állományban notepaddal, kódtábla nélkül. Akkor Gßbor lett az ékezetes névből. Beállítottam a kódtáblát "chcp 1250" és az is lefut így. Ez lett az eredmény. (A fájlneveket töröltem)

    Köszönöm szépen a segítséget!

    D:\Megosztott>chcp 1250
    Active code page: 1250

    D:\Megosztott>for /F "tokens=1 delims=. " %a in ('date /t') do set yyyy=%a

    D:\Megosztott>set yyyy=2016

    D:\Megosztott>for /F "tokens=2 delims=. " %a in ('date /t') do set mm=%a

    D:\Megosztott>set mm=08

    D:\Megosztott>for /F "tokens=3 delims=. " %a in ('date /t') do set dd=%a

    D:\Megosztott>set dd=30

    D:\Megosztott>set folderdate=2016.08.30

    D:\Megosztott>net use x: \\NAS\Iroda
    A parancs sikeresen végrehajtva.

    D:\Megosztott>md "C:\Gabor\backup\2016.08.30\Outlook\"
    A subdirectory or file C:\Gabor\backup\2016.08.30\Outlook\ already exists.

    D:\Megosztott>xcopy C:\Users\Gábor\AppData\Local\Microsoft\Outlook x:\Gabor\backup\2016.08.30\Outlook\ /e /h /r /y /k /c

    .........................
    18 File(s) copied

    D:\Megosztott>net use x: /delete
    x: sikeresen törölve

    D:\Megosztott>pause
    Press any key to continue . . .

    Szívesen!
    És akkor még egy segítség :)
    Ha notepad++-t használod, akkor a batch file-ban maradjon minden úgy ahogy elküldted a legutóbbi hozzászólásodban (tehát a "chcp 1250"-nel) és a np++-ban be lehet/kell állítani ezt a codepage-t (természetesen csak akkor, ha magyar ékezetes fileneveket használsz) a bat file-ra magára is a következő módon, de ez nem állítja a többi file codepage-t az nppp-ban:
    Ezt a menüpontot (a menüfában) ki kell választan (kép)i

  • csaszizoltan
    csendes tag

    Amit küldtél, lefuttattam és ezt kaptam.

    D:\Megosztott>´╗┐cp 1250
    '´╗┐cp' is not recognized as an internal or external command,
    operable program or batch file.

    D:\Megosztott>for /F "tokens=1 delims=. " %a in ('date /t') do set yyyy=%a

    D:\Megosztott>set yyyy=2016

    D:\Megosztott>for /F "tokens=2 delims=. " %a in ('date /t') do set mm=%a

    D:\Megosztott>set mm=08

    D:\Megosztott>for /F "tokens=3 delims=. " %a in ('date /t') do set dd=%a

    D:\Megosztott>set dd=30

    D:\Megosztott>set folderdate=2016.08.30

    D:\Megosztott>Rem net use x: \\NAS\Iroda

    D:\Megosztott>md "C:\Gabor\backup\2016.08.30\Outlook\"

    D:\Megosztott>xcopy C:\Users\Gábor\AppData\Local\Microsoft\Outlook C:\Gabor\backup\2016.08.30\Outlook\ /e /h /r /y /k /c
    File not found - Outlook
    0 File(s) copied

    D:\Megosztott>Rem net use x: /delete

    D:\Megosztott>pause
    Press any key to continue . . .

    A kódtábla parancsa az "cp" vagy "chcp" pontosan. Én chcp-t találtam. De azzal sem jó.

    D:\Megosztott>´╗┐chcp 1250
    '´╗┐chcp' is not recognized as an internal or external command,
    operable program or batch file.

    Ahogy nézem az ékezetes karakterek zavarják a dolgokat mert a mappák létrehozása a NAS-on is és a c:/ működik. Korábban próbáltam máshonnan másolni a C:-ről és onnan nem volt gond.
    Ami még kimaradt win10 x64 rendszeren próbáltam.

    Először is elnézést a hibáért, tényleg chcp és nem cp (lemaradt a másolásból a ch). :W
    Sajnos a Windows 10 dolgaiban nehezebben leszek kompetens, ugyanis win7-ig jutottam még csak el, de
    itt több dolog is hibádzik, bár itt csak command ablakról van szó, valószínű minden vátozatlan.

    1. Az első sor, a ´╗┐chcp 1250 sor biztos hogy nem tud végrehajtódni, mert (ahogy jelzi is) a ´╗┐chcp karaktersorozattal nem tud mit kezdeni a dos, ezt most úgy tudnánk megoldani, hogy elé egy sorban Rem akarmi-t írsz,

    2. Valami nagyon nem stimmel az editorral (milyen szövegszerkesztővel dolgozol ebben a problémában?), mert a G├íbor ékezethibával majdnem biztos, hogy nem fogok tudni tanácsot adni 20 perc alatt. Ha kérhetlek, térj át most az egyszerű Notepad.exe-re.
    Ha Gßbor-t (vagy Gábor-t) látunk az xcopy sorban, akkor nyert ügyünk lesz.

    2. szeretném látni a karakterkódlapokat, tehát beszúrunk chcp sorokat is, tehát végül is így

    Rem akármi
    chcp
    chcp 1250
    chcp
    for /f "tokens=1 delims=. " %%a in ('date /t') do set yyyy=%%a
    ...

    és kérlek, ha az xcopy akár hibával, akár jól fut le most, akkor is küldjél légyszíves egy ugyanilyen futáseredményt, mint az elébb :)

  • csaszizoltan
    csendes tag

    Köszönöm a választ! A "chcp 1250" parancs sem oldotta meg. Így sem másolja át, csak a mappát hozza létre. Próbáltam, hogy kitettem az "" jeleket is.

    Azt tudom ha a .pst csatolva van akkor nem engedi másolni, de az outlook le van állatva.

    Kérlek próbáljuk meg az alábbit, hogy lássuk mi történik

    - Kiütjük a NAS-sal kapcsolatos tevékenységeket
    - X. helyett a C: egységre másolunk, hogy lássuk egyáltalán megtörténne-e a másolás csak a gépen NAS nélkül
    - pause-t rakunk a végére, hogy lássuk a dos ablakon, a Gábor szó (ékezet) helyesen jelenik-e meg

    cp 1250
    for /f "tokens=1 delims=. " %%a in ('date /t') do set yyyy=%%a
    for /f "tokens=2 delims=. " %%a in ('date /t') do set mm=%%a
    for /f "tokens=3 delims=. " %%a in ('date /t') do set dd=%%a

    set folderdate=%yyyy%.%mm%.%dd%

    Rem net use x: \\NAS\Iroda
    md "C:\Gabor\backup\%folderdate%\Outlook\"
    xcopy C:\Users\Gábor\AppData\Local\Microsoft\Outlook C:\Gabor\backup\%folderdate%\Outlook\ /e /h /r /y /k /c
    Rem net use x: /delete

    pause

  • csaszizoltan
    csendes tag

    Sziasztok!

    Egy kis segítséget szeretnék kérni. Egy batch fájlt szeretnék készíteni amivel időközönként az Outlook adatfájljait átmásolom egy hálózati gép megosztott könyvtárába. De valamiért az Outlook mappájával nem működik. A hálózati meghajtón létrehozza a könyvtárat, de a másolás nem fut le. D:-ről másol.
    Tudnátok segíteni, hogy mi lehet a gond. Előre is köszönöm!

    for /f "tokens=1 delims=. " %%a in ('date /t') do set yyyy=%%a
    for /f "tokens=2 delims=. " %%a in ('date /t') do set mm=%%a
    for /f "tokens=3 delims=. " %%a in ('date /t') do set dd=%%a

    set folderdate=%yyyy%.%mm%.%dd%

    net use x: \\NAS\Iroda
    md "x:\Gabor\backup\%folderdate%\Outlook\"
    xcopy C:\Users\Gábor\AppData\Local\Microsoft\Outlook x:\Gabor\backup\%folderdate%\Outlook\ /e /h /r /y /k /c
    net use x: /delete

    Sziasztok!

    Az idézőjel most nem kell, az inkább a filepath-ban szereplő szóközre illetve a command line vezérlő karaktereinek elfedésére van ("<space>|<>/" stb. ), de pont ezért mégiscsak sose árt.

    A valószínű megoldást itt tárgyalják, ha mondjuk az egyszerű notapad-dal készült a batch file::
    Ékezetes batch file

    tehát ?.bat első sorába:
    chcp 1250
    for /f "tokens=1 delims=. " %%a in ('date /t') do set yyyy=%%a
    .
    .
    .

    A tanulság: egész egyszerűen nem szabad a user könyvtárat ékezetesnek megadni a Windows telepítése során, és sajnos (úgy tudom) később már nem írható át, ezzel (ékezetes usermappanév) volt nekem régebben a legtöbb problémám, egyéb ékezetes file-okra meg elenyésző, mert legfeljebb átírtam a file nevét angol ABC-re.

  • csaszizoltan
    csendes tag

    Üdv!

    Azt szeretném megoldani, hogy batch fájl pingeljen pár szájtot, majd az egészet kimentse egy txt-be, aminek a fájlneve tartalmazza az időpontot.

    Sajnos már ott megakadtam, hogy a fájlnevet dátummal lássa el.

    Az megvan, hogy ha utána írom, hogy >file.txt akkor a parancs outputot menti, de ennyire jutottam, több parancsnál felülírja az előző ping outputját.

    Tudnátok segíteni ebben? :R

    A time-mal már nehezebb a dolog

    Echo %time%

    a kettőspontokat le kell cserélni így

    Echo %time::=-%

    vagy mondjuk pontra

    Echo %time::=.%

    továbbá hogy elnyelje a filenévmegadásnál a vesszőt (tizedszázadmásodperc) is, idézőjelezni is kell

    dir *.*>>"filename%date%%time::=.%.txt"

  • csaszizoltan
    csendes tag

    Hello!

    Hogy tudom meg csinálni, hogy a betch file ne kezelje az & jelent, mert így nem jó:

    IF EXIST %USERPROFILE%\Desktop\Kerulet_szamito.vbs (
    ECHO Msgbox "A negyszog Kerulete ""^&"Kerulet"^&"" cm!", , "Kerulet szamito">> %USERPROFILE%\Desktop\Kerulet_szamito.vbs ) ELSE (
    ECHO Msgbox "A negyszog Terulete ""^& Terulet"^&"" cm2!", , "Terulet szamito">> %USERPROFILE%\Desktop\Terulet_szamito.vbs )
    PAUSE

    Szia!

    Kérlek írd le, hogy mi az a két sor, amit szeretnél látni a Kerulet_szamito.vbs-ben, mert a vbs képességeim még gyatrábbak, mint a bat tudásaim, egyébként a ^&-nak a kalap-pal együtt szerepeltetése jó irány.
    Most látom, hogy négy helyen "" (duplán kitett idézőjelek) szerepel, ha mind a négy helyen az egyiket kitörlöd és a második ECHO-ban a
    & Terület"^& helyett
    & "Terület"^& -t írsz (egy idézőjel beszúrása tulajdonképpen csak), akkor helyrerázódhatnak a dolgok.
    Ha mégsem ,akkor várom a elvártat :)

    Üdv.

  • csaszizoltan
    csendes tag

    Köszi a tippeket, végül ez lett belőle:
    @echo off
    setlocal EnableDelayedExpansion
    set fajlnev=%date%txt
    d:
    cd D:\PortableApps\ftp-list
    del fajlnev
    winscp.com /script=ftpserverem>>%fajlnev%
    rem 5=fájlméret byte-okban
    rem 6=hónap rövid neve
    rem 7=nap sorszáma
    rem 8=idő
    rem 9-=fajlnev
    for /f "skip=11 tokens=5,6,7,8,* delims= " %%A in (%fajlnev%) do call :sorfeldolgozas "%%E" "%%A" "%%B" "%%C" "%%D"
    goto :vege

    :sorfeldolgozas
    set nev=%~1
    set /a meret=%~2/1024/1024
    if "%~3" == "Jan" set honap=01
    if "%~3" == "Feb" set honap=02
    if "%~3" == "Mar" set honap=03
    if "%~3" == "Apr" set honap=04
    if "%~3" == "Maj" set honap=05
    if "%~3" == "Jun" set honap=06
    if "%~3" == "Jul" set honap=07
    if "%~3" == "Aug" set honap=08
    if "%~3" == "Sep" set honap=09
    if "%~3" == "Oct" set honap=10
    if "%~3" == "Nov" set honap=11
    if "%~3" == "Dec" set honap=12
    if %~4 lss 10 (set nap=0%~4) else (set nap=%~4)
    set ora=%~5
    echo %honap%-%nap%,%ora%,%nev%,%meret%MB>>ftp-%fajlnev%

    :vege

    Szia!

    Az If sorozat helyére sorok száma alapján rövidebb, bár nem derül ki róla látványosabban, hogy mit csinál:

    setlocal EnableDelayedExpansion
    Set _Count=1
    for %%G in (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) do (
    If %~3==%%G Set _Result=0!_Count!
    Set /A _Count+=1
    )
    Endlocal EnableDelayedExpansion & Set Honap=%_Result:~-2%

    A SetLocal Ena... engedélyezi, hogy futásidőben értékelődjenek ki változók, amit a változónál ! jellel mondunk meg.
    Az Endlocal sorát így kell leírni (egy sorban), hogy a Honap jól kapjon értéket.
    A %_Result:~-2% megoldásnak nem voltam eddig tudatában, ez annyit tesz a -2-vel hogy a string jobb végéről visszaszámolva két karakterrel metszi ki.
    A Maj helyett May-t kell írni.

    Üdv.

  • csaszizoltan
    csendes tag

    A set fajlnev=%date%.txt-ba nem kell pont, a dátum automatice tesz egy pontot a dátum végére (pl. 2015.10.12.)

    Igen, erre napkozben rájöttem, mert bekapcsolt echo-val állandóan panaszkodott, hogy nincs fajlnev nevü fájl :B

    (find "%%A" < teljes_lista.txt > nul || >> teljes_lista.txt echo.%%A)

    Ez ugye úgy működik, hogy a find parancs rákeres minden egyes sorra a teljes_lista.txt-ben, és a parancs kimenetét elküldjük a semmibe. Ettől még visszaad egy errorlevel értéket, és ezt használja fel arra, hogy az adott sort beletegye a teljes_lista.txt-be, vagy ne.
    [link]

    Nagyon köszönöm a magyarázatot és linket , rátapintottál arra, amiről eddig intuitíve azt hittem, hogy simán csak utasításfelsorolás (a && és a || a & szinonimái). :R

  • csaszizoltan
    csendes tag

    Sőt a végére odabiggyesztve ezt, fullextrás lett:
    rem sorbarendezi a napi listát
    sort ftp-%fajlnev% /o ftp-%fajlnev%

    rem kiveszi a duplikátumokat
    for /f "tokens=* delims= " %%A in (ftp-%fajlnev%) do (find "%%A" < teljes_lista.txt > nul || >> teljes_lista.txt echo.%%A)

    goto:eof

    Bár ez utóbbi csak holnap fog kiderülni :B

    Szia!

    Külön örülök, hogy a hónapokkal való favágást nem kellett tanácsolnom, mert kidolgozott jobb ötletem nekem sem volt :) , és két elírásjavítást tennék e remek munkához:

    Rem a pont hiányzott a kiterjesztés előtt
    set fajlnev=%date%.txt

    Rem a változójelölés hiányzott
    del %fajlnev%

    Az alábbi rész meglepetést okoz nekem, ugyanis nem fér a fejembe hogyan működik, de működik, a for-ral kipróbáltam és tényleg gyomlálja a duplán vagy akár triplán akárhol előforduló sorokat:

    (find "%%A" < teljes_lista.txt > nul || >> teljes_lista.txt echo.%%A)

    Tudsz esetleg linket adni, és ha bárki érti, akkor attól magyarázatot? :)

    Minden jót!

  • csaszizoltan
    csendes tag

    Már nagyon péntek van, és nem forognak a kerekek:(

    winscp-vel lekérek egy könyvtárlistát, mert a beépített ftp nem ismeri a passive módot.
    Hogyan tudnám kigyomlálni a listát emberi fogyasztásra alkalmas formába?

    Connecting to ftp.szerverem.hu ...
    Connected
    Starting the session...
    Session started.
    Active session: [1] user@ftp.szerverem.hu
    /Konyvtaram
    D--------- 0 0 ..
    -rw-rw-rw- 0 user group 1433338128 Oct 6 19:40 151006 fájl1
    -rw-rw-rw- 0 user group 206993412 Sep 22 17:55 fájl2
    -rw-rw-rw- 0 user group 195131396 Oct 3 13:18 fájl3

    Az első pár sort el kellene dobni, és csak a fájl listát meghagyni, átalakítani:
    2015-10-06 19:40 fájl1 1433MB
    2015-09-22 17:55 fájl2 206MB
    2015-10-03 13:18 fájl3 195MB

    Az már csak hab lenne a tortán, ha dátum szerint lenne rendezve a lista. Attól tartok valami alap célprogramot kell hozzá faragni. Vagy tévedek?

    Szia!

    prompt>winscp | findstr "^[-]"
    -rw-rw-rw- 0 user group 1433338128 Oct 6 19:40 151006 fßjl1
    -rw-rw-rw- 0 user group 206993412 Sep 22 17:55 fßjl2
    -rw-rw-rw- 0 user group 195131396 Oct 3 13:18 fßjl3

    leveszi a fejlécet, mert a findstr olyan sorokat továbbít a consolra, ahol a sor elején (amit a "^" jelöl) - character ("[-]" jelöli) van.

    prompt>FOR /F "tokens=5,6,7,8,* delims= " %A IN (' winscp | findstr "^[-]" ') DO @echo %B %C %D %A %E
    Oct 6 19:40 1433338128 151006 fßjl1
    Sep 22 17:55 206993412 fßjl2
    Oct 3 13:18 195131396 fßjl3

    Batcben (%A helyett dupla %-kal, tehát %%A és így tovább %%E-ig):

    FOR /F "tokens=5,6,7,8,* delims= " %AA IN (' winscp | findstr "^[-]" ') DO @echo %BB %CC %DD %AA %EE

    A delims=<space> szóközzel elválasztott szavakra tördeli szét a tokens= vel meghatározott indexekűeket. A %A-ba a fileméret kerül a %B a hónap neve majd a végén a %E-be a 9. szótól a végtelenig (* mondja ezt). Azután az @echo megfelelően összekeveri a stringeket.

    Azt nem nagyon hiszem hogy a winscp csak ilyen bénán írja ki a dátumokat, kell lennie megfelelő kapcsolónak, hogy a kívánt formátum legyen. Lehetséges, hogy a dir parancs is pont ilyen bénán írja ki a dátumokat? Mert akkor a "set dircmd=" -t kell állítani.

    Üdv.

  • csaszizoltan
    csendes tag

    Szia!

    Több dologra is oda kell majd figyelni:
    1. Ne legyen a filenevekben és a pathokban magyar ékezet, mert a szövegszerkesztőmben másképp definiálja mint a batch futtatásakor (azt hiszem meg lehet csinálni ékezetesekkel is, csak most ezzel én inkább nem bajlódnék :) )

    2. A filenevek szigorúan 101-től kezdődjenek (Set First=101) és ne száznál alacsonyabb értéktől (Ne 099, ne 97, ne 002, ne 1 stb), mert most nem tudnék balról 0-val feltöltést asorszámra vonatkozólag írni batch-ben.

    3. A filenevekben a sorszámok szigorúan egymásután egyesével kövessék egymást (ne legyen kihagyás, vagy ismétlődés különböző kiterjesztésekkel) és szigorúan egységes filenév szerkezettel rendelkezzenek a kiterjesztéssel egyetemben. Nem nagy tragédia, ha nincs, vagy nem megfelelő sorszámú, szerkezetű képfile(ok) van, de akkor aznap nem lesz kép.

    4. A filenevekben belül a sorszámok mindig ismételjék meg egymást (tehát ne legyen 102_reklam103.jpg hanem 102_reklam102.jpg).

    5. Az utolsó filenév sorszám 999 lehet - át lehet írni 1001-9999 intervallumra is, kérd akkor újra a közreműködésemet, mert akkor újabb dolgokra kell odafigyelni, pl ne számoljon annyit az első for ciklussal, azzal amelyik kideríti a last, utolsó létező sorszámot

    6. Azt hogy melyik sorszámú file-t másolta egy "sorszám.txt" (mondjuk 103.txt) létezésével és sorszámának ciklikus növelésével tárolja a képek mappában

    7. tehát létre kell hozni a FromPath mappában egy 101.txt akár üres file-t.

    8. Esetleg ki kell próbálni a batch file ismételt futtatásával először 4-5 képfile-on hogy működik-e, vált a következőre és az elsőre (csak a képsorszámot echo-zom a képernyőre)

    9. A "Set First=" "Set FromPath=" és "Set ToPath=" sorokat (a pathoknál záró \ nélkül) ki kell tölteni értelemszerűen.

    10. Nem tudom, hogy itt a fórumon szokás-e, lehet-e, de ha lehet, akkor a pár órás ügyködésemmel arányos összeget felajánlhatnál a wikipedia-nak :K

    @Echo Off
    Set First=101
    Set FromPath=D:\Batch\Kepek
    Set ToPath=D:\Batch\Aktualis

    Rem az utolso sorszam megkeresese es a Last-ba ertekedasa
    For /L %%L In (%First%, 1, 999) Do If exist %FromPath%\%%L_reklam%%L.jpg Set Last=%%L

    Rem Esetleg a sok kozul egy hianyzo sorszam kiirasa
    Set Absent=000
    For /L %%A In (%First%, 1, %Last%) Do If not exist %FromPath%\%%A_reklam%%A.jpg Set Absent=%%A
    If %Absent%==000 Goto Tovabb
    Echo Legalabb egy sorszamu file hianyzik es az a kovetkezo: %Absent%

    :Tovabb
    Rem Az elozo napi aktualis sorszam megkeresese es az Prev-be toltese
    For /L %%P In (%First%, 1, %Last%) Do If exist %FromPath%\%%P.txt Set Prev=%%P

    Rem If,Else,EndIf-ig: A ciklikusan kovetkezo aktualis sorszam megkeresese es Next-be toltese
    If %Prev%==%Last% Goto Else
    For /L %%N In (%Last%, -1, %Prev%) Do If not exist %FromPath%\%%N.txt Set Next=%%N
    Goto EndIf

    :Else
    Set Prev=%Last%
    Set Next=%First%

    :EndIf
    Echo Az aktualis kepsorszam: %Next%
    Ren %Prev%.txt %Next%.txt
    Copy %FromPath%\%Next%_reklam%Next%.jpg %ToPath%\reklam.jpg >%FromPath%\log.txt

    És egy javított:
    (ha nincs "sorszam.txt" akkor az első sorszámtól kezdve létrehoz)

    @Echo Off
    Set First=101
    Set FromPath=D:\Batch\Kepek
    Set ToPath=D:\Batch\Aktualis

    Rem az utolso sorszam megkeresese es a Last-ba ertekedasa
    Set Last=%First%
    For /L %%L In (%First%, 1, 999) Do If exist %FromPath%\%%L_reklam%%L.jpg Set Last=%%L

    Rem Esetleg a sok kozul egy hianyzo sorszam kiirasa
    Set Absent=000
    For /L %%A In (%First%, 1, %Last%) Do If not exist %FromPath%\%%A_reklam%%A.jpg Set Absent=%%A
    If %Absent%==000 Goto Tovabb
    Echo Legalabb egy sorszamu file hianyzik es az a kovetkezo: %Absent%

    :Tovabb
    Rem Az elozo napi aktualis sorszam megkeresese es az Prev-be toltese
    Set Prev=%First%
    For /L %%P In (%First%, 1, %Last%) Do If exist %FromPath%\%%P.txt Set Prev=%%P

    Rem If,Else,EndIf-ig: A ciklikusan kovetkezo aktualis sorszam megkeresese es Next-be toltese
    If %Prev%==%Last% Goto Else
    Set Next=%Last%
    For /L %%N In (%Last%, -1, %Prev%) Do If not exist %FromPath%\%%N.txt Set Next=%%N
    Goto EndIf

    :Else
    Set Prev=%Last%
    Set Next=%First%

    :EndIf
    Echo Az aktualis kepsorszam: %Next%
    Del %FromPath%\%Prev%.txt >%FromPath%\log.txt
    Echo >%FromPath%\%Next%.txt
    Rem Ren %Prev%.txt %Next%.txt
    Copy %FromPath%\%Next%_reklam%Next%.jpg %ToPath%\reklam.jpg >%FromPath%\log.txt

  • csaszizoltan
    csendes tag

    Sziasztok!

    Bocsánat, ha kicsit érthetetlenül írtam.

    Szóval a munkahelyemen a következő volt eddig: pár száz win kliensnek azt kellett beállítani, hogy 10 perc inaktivitás után mikor elindul a képernyő kímélő, egy megadott mappából játszon le képeket beállított sorrendben egymás után.

    A marketing osztály ezt a szerveren egy megosztásba másolja és innen szinkronizáltatom a kliensek felé házirendből.(azaz másolom a kiensek könyvtárába)

    A képek formátuma: 101_reklám01,102_reklám02..11x_reklám11x

    Viszont új kérésük, hogy csak napi egy kép legyen 101_reklám01 és következő nap a sorrendben következő egész nap.

    Erre szerettem volna scriptet írni, hogy autómatikus legyen.

    Arra gondoltam, hogy lesz a mappa, mit ők karbantartanak és lesz még a szerveren egy, amit küldök a kliensek felé, ami sorrendben helyes képet (egyet) tartalmazza.

    Csak hát ugye ki kell olvasnom mi van a küldendő mappában nap végén és a sorrendben következőt a tárból betenni a régit törölni, amig van szám, mert utána újra az első.

    Na itt akadtam el, kézzel biztosan nem fogom váltogatni.
    Java-ból van némi tapasztalatom, de itt nem lehet objektumot összehasonlítani, ráadásul az első három karaktert kell figyelnem.

    Remélem így már jobban leírtam a problémát.

    Köszönöm, ha van időtök ezen gondolkozni kicsit.
    Szép estét, Laci

    Szia!

    Több dologra is oda kell majd figyelni:
    1. Ne legyen a filenevekben és a pathokban magyar ékezet, mert a szövegszerkesztőmben másképp definiálja mint a batch futtatásakor (azt hiszem meg lehet csinálni ékezetesekkel is, csak most ezzel én inkább nem bajlódnék :) )

    2. A filenevek szigorúan 101-től kezdődjenek (Set First=101) és ne száznál alacsonyabb értéktől (Ne 099, ne 97, ne 002, ne 1 stb), mert most nem tudnék balról 0-val feltöltést asorszámra vonatkozólag írni batch-ben.

    3. A filenevekben a sorszámok szigorúan egymásután egyesével kövessék egymást (ne legyen kihagyás, vagy ismétlődés különböző kiterjesztésekkel) és szigorúan egységes filenév szerkezettel rendelkezzenek a kiterjesztéssel egyetemben. Nem nagy tragédia, ha nincs, vagy nem megfelelő sorszámú, szerkezetű képfile(ok) van, de akkor aznap nem lesz kép.

    4. A filenevekben belül a sorszámok mindig ismételjék meg egymást (tehát ne legyen 102_reklam103.jpg hanem 102_reklam102.jpg).

    5. Az utolsó filenév sorszám 999 lehet - át lehet írni 1001-9999 intervallumra is, kérd akkor újra a közreműködésemet, mert akkor újabb dolgokra kell odafigyelni, pl ne számoljon annyit az első for ciklussal, azzal amelyik kideríti a last, utolsó létező sorszámot

    6. Azt hogy melyik sorszámú file-t másolta egy "sorszám.txt" (mondjuk 103.txt) létezésével és sorszámának ciklikus növelésével tárolja a képek mappában

    7. tehát létre kell hozni a FromPath mappában egy 101.txt akár üres file-t.

    8. Esetleg ki kell próbálni a batch file ismételt futtatásával először 4-5 képfile-on hogy működik-e, vált a következőre és az elsőre (csak a képsorszámot echo-zom a képernyőre)

    9. A "Set First=" "Set FromPath=" és "Set ToPath=" sorokat (a pathoknál záró \ nélkül) ki kell tölteni értelemszerűen.

    10. Nem tudom, hogy itt a fórumon szokás-e, lehet-e, de ha lehet, akkor a pár órás ügyködésemmel arányos összeget felajánlhatnál a wikipedia-nak :K

    @Echo Off
    Set First=101
    Set FromPath=D:\Batch\Kepek
    Set ToPath=D:\Batch\Aktualis

    Rem az utolso sorszam megkeresese es a Last-ba ertekedasa
    For /L %%L In (%First%, 1, 999) Do If exist %FromPath%\%%L_reklam%%L.jpg Set Last=%%L

    Rem Esetleg a sok kozul egy hianyzo sorszam kiirasa
    Set Absent=000
    For /L %%A In (%First%, 1, %Last%) Do If not exist %FromPath%\%%A_reklam%%A.jpg Set Absent=%%A
    If %Absent%==000 Goto Tovabb
    Echo Legalabb egy sorszamu file hianyzik es az a kovetkezo: %Absent%

    :Tovabb
    Rem Az elozo napi aktualis sorszam megkeresese es az Prev-be toltese
    For /L %%P In (%First%, 1, %Last%) Do If exist %FromPath%\%%P.txt Set Prev=%%P

    Rem If,Else,EndIf-ig: A ciklikusan kovetkezo aktualis sorszam megkeresese es Next-be toltese
    If %Prev%==%Last% Goto Else
    For /L %%N In (%Last%, -1, %Prev%) Do If not exist %FromPath%\%%N.txt Set Next=%%N
    Goto EndIf

    :Else
    Set Prev=%Last%
    Set Next=%First%

    :EndIf
    Echo Az aktualis kepsorszam: %Next%
    Ren %Prev%.txt %Next%.txt
    Copy %FromPath%\%Next%_reklam%Next%.jpg %ToPath%\reklam.jpg >%FromPath%\log.txt

  • csaszizoltan
    csendes tag

    Sziasztok!

    Lenne egy feladatom, amit batchban kellene megoldani.
    Van egy képeket tartalmazó mappa, ami 01_*.jpg maszkkal tartalmaz úgy 50 képet.
    És van egy aktuális mappa, amiben minden nap egyel nagyobb sorszámú képnek kell lennie, amíg van kép és utána az elsőszámú.

    A napi futtatást egy feladatütemező végzi.

    Tehát kiolvasni az aktuális mappában lévő mondjuk első két karater*.jpgt ->01.Megvizsgálni, hogy van-e 02_valami.jpg, ha van régi törlés új másolás.

    Nem nagyon tudom eddig megoldani.Vagy bonyolultan csinálom.

    Köszönöm, ha van valakinek ideje hozzá.

    Üdv!

    Szia!

    Sajnos nagyon nem érthető.
    Ezért kérlek írd meg pár (4-5) konkrét filenévvel, hogy a képeket tartalmazó mappa és az aktuális mappa milyen file-okat tartalmaz-na -hat, majd azt, hogy egy (több) nap milyen változás áll be mondjuk ilyen formában:
    2015.09.23. kép-vagy-aktuális-mappa\fileateljesnevével.kit -> k-v-a-mappa\filnévváltozás.kit
    2015.09.24. k-v-a-mappa\fileateljesnevévelkettő.kit -> k-v-a-mappa\másikfilnévváltozás.kit
    ...

    Gondolom, fényképezőgépről vagy mobilről jönnek a file-ok a kép mappába, szóval erről is írjál hogy mi történ-ik -het napi szinten ezekkel az állományokkal, és egyáltalán bővebben arról, hogy miért is szeretnél ilyesmit :) .
    Előrevetítve majd úgy oldjuk meg, hogy ha ez a két mappa a C: egységen van, akkor a D: egységre másolt file-okkal és ugyanilyen path-on (csak éppen D: egységgel kezdve) kipróbáljuk a működést.

    Üdv.

Új hozzászólás Aktív témák

Hirdetés