Új hozzászólás Aktív témák
-
KergeTomi
csendes újonc
Üdv!
Rendszergazdaként szeretnék futtatni egy egyszerű parancsot:setup.exe /configure configuration.xml
Ha nyitok egy parancssort rendszergazdaként, megy. Beírom ugyanezt egy scriptbe, azt futtatom rendszergazdaként, akkor már nem találja a setup.exe-t.'setup.exe' is not recognized as an internal or external command,
operable program or batch file.
Ezt is próbáltam:
cd %~dp0
setup.exe /configure configuration.xml
A script egy mappában van a setup.exe-vel. Mi a titok?[ Szerkesztve ]
-
-
sztanozs
veterán
Mert a 0-val kezdodo szamokat (ha nincs benne 8 vagy 9) akkor az atoi c fuggveny octal-nak erelmezi, ha automata ertelmezesre van allitva (base=0):
The default is decimal, but you can specify octal 8, hexadecimal 16, or decimal 10. If 0 is the base, the string will be parsed as a hexadecimal if it has a leading 0x and as an octal if it has a leading 0. Otherwise, it will be treated as a decimal.[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Tamy
senior tag
Az okát nem értem, de úgy tűnik így azt csinálja, amit szeretnék, kellően hülyebiztos:
:number
echo.&set /p COUNT=Adj meg egy számot, majd nyomd meg az Entert: ||GOTO:EOF
if %COUNT% GTR 14 echo Hibas szam, ismeteld meg & goto:number
if %COUNT% LSS 10 set COUNT=0%COUNT%
set COUNT=%COUNT:~-2%
if %COUNT% LSS 1 echo Hibas szam, ismeteld meg & goto:number
if %COUNT% GTR 14 echo Hibas szam, ismeteld meg & goto:number
echo %COUNT%
Egész életemben azon gondolkodtam, hogy kéne valamit dolgoznom. Ezért aztán a végén nem is maradt rá időm.
-
Tamy
senior tag
Belefutottam egy érdekes hibába:
:number
echo.&set /p COUNT=Adj meg egy szamot, majd nyomd meg az Entert: ||GOTO:EOF
if %COUNT% GTR 14 echo Hibas szam, ismeteld meg & goto :number
echo %COUNT%
Ez egy script részlete, ami működik, ha pl. azt írom be, hogy 15, de a 015 szerinte nem nagyobb 14-nél. Van erre jobb módszer, mint az, hogy előtte megnézem hány számjegyű a beírt szám, és ha több, mint kettő, akkor megy a hibaüzenet?
Egész életemben azon gondolkodtam, hogy kéne valamit dolgoznom. Ezért aztán a végén nem is maradt rá időm.
-
Tamy
senior tag
Köszönöm, közben rájöttem, banális hiba volt. Eredetileg ez volt az alapötlet, csak hibát dobott teszteléskor, már mindennel próbálkoztam, mire kiszúrtam, hogy elírtam az elérési utat.
Egész életemben azon gondolkodtam, hogy kéne valamit dolgoznom. Ezért aztán a végén nem is maradt rá időm.
-
Tamy
senior tag
Mégis kérdezek:
Hogyan tudnék keresni hálózati megosztáson anélkül, hogy felcsatolnám? Ez az alap elgondolás, de miként adhatok meg neki hálózati megosztást?
for %%A IN (*.jpg) DO (set NEW="%%~nA")
Egész életemben azon gondolkodtam, hogy kéne valamit dolgoznom. Ezért aztán a végén nem is maradt rá időm.
-
Tamy
senior tag
Téves, benéztem valamit.
[ Szerkesztve ]
Egész életemben azon gondolkodtam, hogy kéne valamit dolgoznom. Ezért aztán a végén nem is maradt rá időm.
-
Tamy
senior tag
válasz
Fire/SOUL/CD #1183 üzenetére
Köszönöm, érdekes
Egész életemben azon gondolkodtam, hogy kéne valamit dolgoznom. Ezért aztán a végén nem is maradt rá időm.
-
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /L %%i in (1, 1, 20) do (
set "leadingzero=0000%%i"
echo !leadingzero:~-2!
)
pausea leadingzero beállításánál 4db bevezető nulla van, ami azt jelenti, hogy max. 4 jegyű számig jó, azaz a !leadingzero:~-4! estén. Ha nagyobb számot adsz meg, mint amennyi a bevezető nullák számal (pl. !leadingzero:~-6!), akkor "érdekes" dolog történik, próbáld ki.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Tamy
senior tag
Köszönöm, akkor marad az eredeti elképzelés:
@echo off
set counter=0
:loop
set /a counter=counter+1
if %counter% LSS 10 (set num=0%counter%) else (set num=%counter%)
echo %num%
if not %counter% == 5 goto :loop
Egész életemben azon gondolkodtam, hogy kéne valamit dolgoznom. Ezért aztán a végén nem is maradt rá időm.
-
cigam
titán
Pedig ennél egyszerűbb nem nagyon van. Batch-ban nincs formázási lehetőség, hogy megadd hány karakteren írja ki, hány tizedesig. Viszont hozzáadhatsz nullákat, és csak az utós 2 karaktert mutatod meg:
@echo off
set counter=0
:loop
set /a counter=counter+1
set number=0%counter%
set number=
%number:~-2%echo %number%
if not %counter% == 20 goto :loop
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
Tamy
senior tag
Sziasztok!
Az alábbi számlálót hogy lehetne rávenni, hogy a 10-nél kisebb számokat is két számjeggyel írja ki? Tehát: 01, 02, 03...? Nyilván egy lehetséges megoldás, hogy megvizsgálom kisebb-e 10-nél, ha igen, eléírok egy 0-át, de biztosan lehetne egyszerűbben/szebben is.
@echo off
set counter=0
:loop
set /a counter=counter+1
echo %counter%
if not %counter% == 20 goto :loop
Egész életemben azon gondolkodtam, hogy kéne valamit dolgoznom. Ezért aztán a végén nem is maradt rá időm.
-
qdak
addikt
Kis frissítés:
@echo off
chcp 65001 >nul
cls
:menu
echo ------------------------------
echo Network Devices Online
echo ------------------------------
arp -a
echo.
echo Valassz egy IP-cimet, amelyre uzenetet szeretnel kuldeni:
echo ------------------------------
echo 0. Szukseges beallitasok!
echo ------------------------------
echo.
setlocal enabledelayedexpansion
set count=0
for /f "tokens=1" %%A in ('arp -a ^| find "dynamic"') do (
ping -n 1 -w 1000 %%A >nul
if not errorlevel 1 (
set /a count+=1
for /f "tokens=1,* delims= " %%B in ('nbtstat -A %%A ^| find "<00>"') do (
set Name=%%C
set Name=!Name:~0,-1!
)
set IP_!count!=%%A
set Name_!count!=!Name!
echo !count!. %%A (!Name!)
)
)
if %count% equ 0 (
echo Nincs online gep talalva.
pause
goto exit
)
set /a count+=1
echo ------------------------------
echo %count%. Kilepes
echo ------------------------------
echo.
set /p choice=Kerlek add meg a valasztott szamot (0-%count%):
if %choice% equ 0 goto settings
if %choice% equ %count% goto exit
if %choice% lss 1 goto menu
if %choice% gtr %count% goto menu
set IP=!IP_%choice%!
set Name=!Name_%choice%!
goto sendmsg
:sendmsg
cls
set /p message=Kerlek ird be az uzenetet, amit kuldeni szeretnel:
msg /SERVER:%IP% * %message%
echo.
echo Uzenet elkuldve a kovetkezo IP-cimre: %IP% (!Name!)
echo.
echo 1. Uj uzenet kuldese ugyanarra a gepre
echo 2. Vissza a gepek valasztasahoz
echo 3. Kilepes
echo.
set /p nextchoice=Kerlek add meg a valasztott szamot (1-3):
if "%nextchoice%"=="1" goto sendmsg
if "%nextchoice%"=="2" goto menu
if "%nextchoice%"=="3" goto exit
:settings
cls
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v AllowRemoteRPC /t REG_DWORD /d 1 /f >nul
echo ------------------------------
echo AllowRemoteRPC = 1
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f >nul
echo ------------------------------
echo fDenyTSConnections = 0
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f >nul
echo ------------------------------
echo LocalAccountTokenFilterPolicy = 1
echo ------------------------------
dism /online /Enable-Feature /FeatureName:"SMB1Protocol" /All
echo SMB1Protocol
echo ------------------------------
netsh advfirewall firewall add rule name="TCP Port 445" dir=in action=allow protocol=TCP localport=445
echo TCP Port 445 = Open
echo ------------------------------
echo Beallitasok befejezve.
pause
goto menu
:exit
exitígy csak a 0 pontot választva állítja be a beállításokat.
[link] msg windows network 1.1.bat
[ Szerkesztve ]
ஃ°˙*˙°ஃ доступ запрещен ஃ°˙*˙°ஃ; Eladó HP ML350 G6: https://hardverapro.hu/apro/hp_ml350_g6/friss.html
-
qdak
addikt
@echo off
chcp 65001 >nul
cls
echo Registry, SMB1, TCP Port 445, beállítások
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v AllowRemoteRPC /t REG_DWORD /d 1 /f >nul
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f >nul
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f >nul
::dism /online /Enable-Feature /FeatureName:"SMB1Protocol" /All
::netsh advfirewall firewall add rule name="TCP Port 445" dir=in action=allow protocol=TCP localport=445
:menu
echo ------------------------------
echo Network Devices Online
echo ------------------------------
arp -a
echo.
echo Valassz egy IP-cimet, amelyre uzenetet szeretnel kuldeni:
echo ------------------------------
setlocal enabledelayedexpansion
set count=0
for /f "tokens=1" %%A in ('arp -a ^| find "dynamic"') do (
ping -n 1 -w 1000 %%A >nul
if not errorlevel 1 (
set /a count+=1
for /f "tokens=1,* delims= " %%B in ('nbtstat -A %%A ^| find "<00>"') do (
set Name=%%C
set Name=!Name:~0,-1!
)
set IP_!count!=%%A
set Name_!count!=!Name!
echo !count!. %%A (!Name!)
)
)
if %count% equ 0 (
echo Nincs online gep talalva.
pause
goto exit
)
set /a count+=1
echo %count%. Kilepes
echo.
set /p choice=Kerlek add meg a valasztott szamot (1-%count%):
if %choice% equ %count% goto exit
if %choice% lss 1 goto menu
if %choice% gtr %count% goto menu
set IP=!IP_%choice%!
set Name=!Name_%choice%!
goto sendmsg
:sendmsg
cls
set /p message=Kerlek ird be az uzenetet, amit kuldeni szeretnel:
msg /SERVER:%IP% * %message%
echo.
echo Uzenet elkuldve a kovetkezo IP-cimre: %IP% (!Name!)
echo.
echo 1. Uj uzenet kuldese ugyanarra a gepre
echo 2. Vissza a gepek valasztasahoz
echo 3. Kilepes
echo.
set /p nextchoice=Kerlek add meg a valasztott szamot (1-3):
if "%nextchoice%"=="1" goto sendmsg
if "%nextchoice%"=="2" goto menu
if "%nextchoice%"=="3" goto exit
:exit
exitEgy üzenet küldő hálózaton belül
ஃ°˙*˙°ஃ доступ запрещен ஃ°˙*˙°ஃ; Eladó HP ML350 G6: https://hardverapro.hu/apro/hp_ml350_g6/friss.html
-
Bekrepali
csendes tag
Talán sikerült a hibát orvosolni ezzel: [link]
Egyelőre nem tapasztaltam hibát. Mondjuk win 10 64bites rendszerem van, de kérdés nélkül frissített. 🤔
Amennyiben továbbra is szívózik, úgy takarítom is le a rendszert, és felkerül helyette egy windows 7.
Elvileg azon is eldöcög az Autocad. -
Bekrepali
csendes tag
Üdv néktek profik!
Totál amatőrként szeretném kérdezni, hogy létezik e olyan automatikusan futtatható parancs, ami minden rendszerindítás után eltávolítja a hálózati kártyát az eszközkezelőből, majd visszacsatolja?
A probléma ami miatt ezt szeretném, a következő: A hálózati kártya nem indul megfelelően (tíz indításból kb. hatszor). Ellenben ha eltávolítom, aztán a hardverváltozások keresésére kattintok, akkor tökéletesen működik a következő rendszerindításig. -
-
-
-
sztanozs
veterán
alternativakent probalj meg esetleg a \\szerver\share helyett eloszor egy \\szerver\ipc$-t (meghajtonev nelkul termeszetesen) hatha az segit.
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
válasz
sztanozs #1164 üzenetére
Úgy van a script, hogy ha nem megy a mount akkor próbál egy delete-t és utána reconnect.
De hát nem megy. És mindig csak egy specifikus irányba.
Nem tudom, hogy a másik oldalon mi van. De megfordult a fejemben, hogy ott se minden kerek.Egyébként úgy tűnik, hogy a SETLOCAL EnableDelayedExpansion -t ha a mount utánra teszem akkor jó.
Kíváncsi leszek, hogy 4-5 nap múlva mit tapasztalatok.[ Szerkesztve ]
A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
sztanozs
veterán
Session problema lehet. Mostanaban a MS kavart valamit a session-okkel, mert en is tapasztalom, hogy az SMB kapcsolatok egy ido utan bontanak, es kell jo par masodperc (akar fel perc is), mig ujraepiti oket az OS.
Erdemes kiprobalni, hogy mount elott megprobalod bontani a kapcsolatot:NET USE /delete \\UNC\path
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Ma azt hittem, hogy felrugom a windowst újra.
Kb 2hete szívok azzal, hogy ugyanaz a script 1 gépen a 8 ból nem fut le.
És folyamatosan az egyik net use-sal van gondja.
Hibaüzenet a klasszik: system error 87 the parameter is incorrect.
A mountolásos részt átrakva egy másik batch file-ba szépen lefut, kézzel lefut, eredeti batchfile-ból nem fut le.
Az az van amikor lefut ha egy net use /d -vel inditok akkor egy darabig jó. Teljes képzavar.
A poén, hogy a 2 mountolásból mindig csak egy kapcsolattal van gondja. Hiába cseréltem fel akkor is ugyanazzal az eléréssel volt gondja.
Amit kiderítettem, hogy előzőleg valaki fixen betűjelhez rendelte, de ki is törölte.
Ez még a registry-ben benne volt. Kitöröltem, de a helyzet nem lett jobb.Majd kínomban fogtam és a script legelejére tettem és most jó.
Mi a windows-os bánat baja lehet? Hívjak hozzá ördögűzőt?A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
Sonja
nagyúr
Ha ezt a parancsot futtatom parancssorból, akkor szépen végre is hajtódik, minden probléma nélkül.
for %f in (*.webp) do magick -quality 95 "%~f" "%~nf.jpg"
Ha viszont beleteszem egy batch file-ba, akkor az alábbi hibaüzenetet kapom:
The following usage of the path operator in batch-parametersubstitution is invalid: %~nf.jpg"
For valid formats type CALL /? or FOR /?The syntax of the command is incorrect.Mi lehet a probléma (és a megoldás)!?
Ha csalódni akarsz, bízz az emberekben!
-
Sonja
nagyúr
Így se volt jó, de végül megoldottam!
Itt a végleges ebook converteres batch file-om!
Nagyon köszönöm a segítséget!
Ha csalódni akarsz, bízz az emberekben!
-
Sonja
nagyúr
Köszönöm a programot, és az oldalt!
Így meg bírtam írni magamnak, kis "szépséghibával". Space nélküli fileokat kezel csak.
Erre még nem jöttem rá, hogy mi a megoldás. Sajna a "valami file.mobi" vagy 'valami file.mobi' nem működik.
Ez van.
Ha csalódni akarsz, bízz az emberekben!
-
cigam
titán
Azt sejtettem hogy nem ilyen egyszerű
A tutorialspoint elég jó kiinduló pont.
@echo off
if "%1"=="" goto :hiba
set fajlnev=%~n1
set kiterjesztes=%~x1
if kiterjeztes=="pdf" (start "ebook-convert %1 fajlnev+".epub" "--no-image" "--unwrap-factor=0.1")
exit
:hiba
echo "Nincs megadva paraméter"Szinte biztos nem működik, de kb ilyen lenne batch-ben.
[ Szerkesztve ]
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
cigam
titán
@echo off IF "%#%" "-eq" "0" ( echo "Parameters required!" exit "1" ) SET book=%~1 SET %~1bookext=%book% SET %~1%book%bext=%bookext% IF "%bext%" "=" "PDF" ( ebook-convert "%~1" "%1%.*%.epub" "--no-image" "--unwrap-factor=0.1" exit "1" ) ebook-convert "%~1" "%1%.*%.epub"
[ Szerkesztve ]
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
Sonja
nagyúr
Nagy segítség kellene. Még Linux alatt írtam pár shell script-et, amit most szeretnék átültetni batch-re.
Itt egy egyszerű ebook konvertálás bash scripte.
Eslőnek a paraméter vizsgálata van. Ha nincs paraméter megadva, akkor visszaadja a "Parameters required!" üzenetet.
Utána a pramétert "lebontom", hogy ki tudjam belőle nyerni a kiterjesztést. Ha ez PDF (átkonvertálva nagyra, tehát mindegy, hogy az ebook.pdf vagy ebook.PDF van megadva), akkor egy másik parancsot hajt végre és kilép. Ha nem PDF, akkor a ismét egy másik parancsot hajtja végre. Az ebook-convert-nek át kell adni a konvertált file nevét, és a konvertálandó file nevét kiterjesztéssel együtt, mert abból állapítja meg, hogy mire kell kovertálni.
Tehát az egész script lényege, hogy megadom pl. econv.sc ebook.mobi, akkor végrehajtódik az
ebook-convert ebook.mobi ebook.epub
parancs. Ha azeconv.sc ebook.pdf
parancsot adom meg, akkorebook-convert ebook.pdf ebook.epub --no-image --unwrap-factor=0.1
parancs hajtódik végre.Az ebook-convert parancssori program az ingyenes Calibre program része.
Tud valaki segíteni át-/megírni?!
Jó lenne esetleg valami doksi is (példákkal), hogy tanuljak, és magam is meg tudjam írni a többi scriptemet (nem nagy dolgok, hasonlóak mint ez).
Előre is köszönöm!
[ Szerkesztve ]
Ha csalódni akarsz, bízz az emberekben!
-
sztanozs
veterán
Ha 0-val kezdodik, akkor a parancs oktalis szamnak ertelmezi, tehat a 8 es 9-es szamok ervenytelenek, raadasul az ertek tizes szamrendszerben is mas lesz:
01 (okt) = 1 (dec)
07 (okt) = 7 (dec)
010 (okt) = 8 (dec)Itt van par jo megoldas:
https://stackoverflow.com/questions/14762813/remove-leading-zeros-in-batch-file[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
PioDVD
senior tag
Üdv!
Egy egyszerű problémát kellene megoldanom, de nem jövök rá - pedig tuti, hogy van megoldás.Beolvasok egy paramétert, ami egy 4 jegyű szám.
Ha SET /A var = %1 (azaz numerikus a típusa), akkor tökéletes, ha nem 0-val kezdődik. Viszont ha 0-val kezdődik, akkor invalid number.
Ha SET var = %1 (azaz string a típusa), akkor viszont 0 értéket vesz fel.
Elvileg utóbbi kellene nekem, legyen string, abban ott kellene lennie a 0-nak az elején, de az egyáltalán nem működik.
Már kínomban az angol nyelvű oldalakat is bújtam, de egyszerűen semmi.
Nekem jó lenne számként is (0123 helyett 123), azt már ki tudnám pótolni, ha nem invalid numberre futna, de a string adná magát igazából.
Tudom, lehetne csak 3 (vagy 2, 1) számjegyet beadni, de nem túl elegáns, ráadásul lehet a 4 számjegy 0000 is, ott nem lenne mit beírni, így elcsúsznának a paraméterek (ez 4-ből az első paraméter).
Köszönöm, ha valaki megszán a megoldással.
-
sztanozs
veterán
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Pöttön
őstag
Sziasztok!
Az egyik programnál amit használok egy ilyen bat-al indítom:
CLIP < CONNECT.TXT
start "reboot_launcher" "C:\Program Files\reboot_launcher\reboot_launcher.exe"A connect.txt-ben egy ip cím van, így ezt automatán vágólapra helyezi.
A kérdésem az lenne, hogy ezt a vágólapra helyezést ezt lehet valmi parancsal késleltetni?
Pl hogy a bat file elindÍtása után 10-15 mp mulva helyezze a connect.txt tartalmát vágólapra?A segítséget előre is köszi!
A sport a legjobb kikapcsolódás...
-
sztanozs
veterán
Igen eleg egyszer kiadni a
SETLOCAL EnableDelayedExpansion
parancsot, ha menet kozben ki akarod valamiert kapcsolni akkor kell csak aSETLOCAL DisableDelayedExpansion
parancs. Viszont a valtozok hasznalatanal figyelni kell, hogy nem mindig %valtozo_nev%, hanem !valtozo_nev! formatumot is kell(het?) hasznalni.[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
sztanozs
veterán
Nem vagyok benne biztos, de szerintem EnableDelayedExpansion-t kell hasznalni.
https://ss64.com/nt/delayedexpansion.htmlJOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Ismét én, egy anomáliával.
@echo off
SET "LOGFILE=d:\test.log"
SET "local_folders1=D:\Folder1 D:\Folder2 D:\Folder3 D:\Folder4"
SET "local_folders=%local_folders1% D:\Folder5 D:\Folder6 D:\Folder7 D:\Folder8"
FOR %%x IN (%local_folders%) DO (
IF EXIST %%x ECHO %%x >>%LOGFILE%
)Nézegettem a logokat és legtöbbször csak a második SET tartalma van benne:
D:\Folder5
D:\Folder6
D:\Folder7
D:\Folder8Kézzel lefuttatva akárhányszor csinálom mindig jó.
Itt már megint mi a bánat van?A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
-
sztanozs
veterán
Akkor bedobok meg egy trukkot. Ha jo a local beallitas, akkor a datum is kisakkozhato, nem kell kezzel megadni:
SET fullstamp=%DATE:~6,4%-%DATE:~0,2%-%DATE:~3,2%
Reszletek: [link]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
sztanozs
veterán
Ha nem baj, nem forditom le magyarra (megfelelo sort kiemeltem):
Parameter Extensions
When an argument is used to supply a filename then the following extended syntax can be applied:
We are using the variable %1 (but this works for any argument, including FOR parameters).
%~f1 Expand %1 to a Fully qualified path name - C:\utils\MyFile.txt
%~d1 Expand %1 to a Drive letter only - C:
%~p1 Expand %1 to a Path only e.g. \utils\ this includes a trailing \ which will be interpreted as an escape character by some commands.
%~n1 Expand %1 to a file Name without file extension or path - MyFile
or if only a path is present, with no trailing backslash, the last folder in that path.
%~x1 Expand %1 to a file eXtension only - .txt
%~s1 Change the meaning of f, n, s and x to reference the Short 8.3 name (if it exists.)
%~1 Expand %1 removing any surrounding quotes (")
%~a1 Display the file attributes of %1
%~t1 Display the date/time of %1
%~z1 Display the file size of %1
%~$PATH:1 Search the PATH environment variable and expand %1 to the fully qualified name of the first match found.The modifiers above can be combined:
%~dp1 Expand %1 to a drive letter and path only.
%~sp1 Expand %1 to a path shortened to 8.3 characters.
%~nx2 Expand %2 to a file name and extension only.[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
include777
aktív tag
válasz
RedHarlow #1055 üzenetére
Szia!
Powershellel:
$sourcePath = "C:\originalfiles\"
$destinationPath = "C:\convertfiles\"
if (!(Test-Path $destinationPath))
{
New-Item -ItemType Directory -Path $destinationPath
}
Get-ChildItem -Path $sourcePath -File | ForEach-Object {
Write-Host "Converting $_"
$content = Get-Content $_.FullName
Set-content (Join-Path -Path $destinationPath -ChildPath $_) -Encoding Ascii -Value $content
}keep calm and learn powershell
-
-
sztanozs
veterán
Akkor ennek mennie kell:
@echo off
SET "A510=c:\temp\A510"
SET "fullstamp=2023-02-28"
SET "b_backup=\\server\backup"
IF EXIST "%A510%" (
FOR /R "%A510%" %%G IN (*) DO (
IF %%~zG GTR 0 "c:\Program Files (x86)\7-Zip\7z.exe" a "%b_backup%\%fullstamp%.zip" "%%G"
)
)[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
válasz
sztanozs #1132 üzenetére
Nem powershell-ezek, és a forfiles probléma csak egy része volt a batch file-nak.
Arról nem beszélve, hogy PS1 futtatáshoz módosítani kell a policy-t vagy batchből hivni -e bypass paraméterrel.Nem érzem az ambiciót, hogy mindent a nyakamba vegyek.
A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
sztanozs
veterán
Powershell:
$A510="c:\temp\A510\"
$fullstamp="2023-02-28"
$b_backup="\\server\backup"
Get-ChildItem $A510 -recurse -Filter *.* | ForEach-Object {
if ($_.Attributes -ne "Directory") {
if ($_.Length -gt 0) {
Start-Process -WorkingDirectory $A510 -FilePath "c:\Program Files (x86)\7-Zip\7z.exe" -ArgumentList "a `"$($b_backup)$($fullstamp).zip`" `"$($_.Directory)\$($_.Name)`"" -Wait
}
}
}[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
sztanozs
veterán
válasz
csadi0011 #1128 üzenetére
Ezert is irja a help, hogy celszeru a FORFILES helyett sima FOR+parameter extension-t hasznalni... Egy bughalmaz az egesz.
Vagy meginkabb powershell, azt sokkal nehezebb elb*bni.[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Win11-en itthon:
Ez működik:FORFILES /P "%A510%" /S /M *.* /C "cmd /S /C ^0x22c:\Program^ Files^ ^(x86)\ImgBurn\ImgBurn.exe^0x22"
Ezek nem
FORFILES /P "%A510%" /S /M *.* /C "cmd /S /C ^0x22c:\Program Files 0x28x860x29\ImgBurn\ImgBurn.exe^0x22"
'"c:\Program' is not recognized as an internal or external command,
operable program or batch file.sztanozs - elvileg ez a te mintád ami szintén nem megy a win11-en.
FORFILES /P "%A510%" /S /M *.* /C "cmd /S /C 0x22c:\Program Files 0x28x860x29\ImgBurn\ImgBurn.exe0x22"
'c:\Program' is not recognized as an internal or external command,
operable program or batch file.FORFILES /P "%A510%" /S /M *.* /C "cmd /S /C "c:\Program Files 0x28x860x29\ImgBurn\ImgBurn.exe""
FORFILES /P "c:\oem\CareCenter\DebugLog" /S /M *.* /C "cmd /S /C "c:\Program Files 0x28x860x29\ImgBurn\ImgBurn.exe""
ERROR: Invalid argument/option - 'Files'.FORFILES /P "%A510%" /S /M *.* /C "cmd /S /C "c:\Program Files (x86)\ImgBurn\ImgBurn.exe""
FORFILES /P "c:\oem\CareCenter\DebugLog" /S /M *.* /C "cmd /S /C "c:\Program Files (x86)\ImgBurn\ImgBurn.exe""
ERROR: Invalid argument/option - 'Files'.A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
sztanozs
veterán
-
-
sztanozs
veterán
Ez nekem mukodik x86-bol:
@echo off
set "A510=c:\temp\py"
set "fullstamp=2023-02-28"
set "b_backup=\\server\backup"
IF EXIST "%A510%" (
FORFILES /P "%A510%" /S /M *.* /C "cmd /S /C if @isdir==FALSE if @fsize GTR 0 0x22c:\Program Files 0x28x860x29\Microsoft Visual Studio\Shared\Python39_64\python.exe0x22 -c 0x22print(r'%b_backup%\%fullstamp%.zip @file')0x22"
)Kimenet:
\\server\backup\2023-02-28.zip certificates.py
\\server\backup\2023-02-28.zip search_dump.py
^CTerminate batch job (Y/N)?[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
csadi0011
őstag
Nem értettem, hogy nekem miért volt jó. Én kicsit tisztítottam a programodon, hogy könnyebben átlássam.
Most kipróbáltam az egészet és nekem is ezt az unexpected hibát írja.
Azif @fsize
nem jó. Ha átírtam pl. így:if @fsize GTR 0
vagy kitöröltem, akkor jó volt.
Próbálgattam az if-et, de szám bemenettel vagy logikai vizsgálat nélkül parancssorból és scriptből sem működött. Viszont akkor hogyan futott le neked eddig másik mappából?[ Szerkesztve ]
-
-
válasz
sztanozs #1120 üzenetére
Szerintem nem 7z függő, hanem bármi ami a Program Files (x86) -ban van az problémás.
Mondjuk nekem még a Notepad++ van ott (érthetetlen okból)
Gyors próba alapján azt sem képes elindítani.A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
-
-
sztanozs
veterán
Oh, nem olvastam el:
To include special characters in the command line, use the hexadecimal code for the character in 0xHH format (ex. 0x09 for tab). Internal CMD.exe commands should be preceded with "cmd /c".
talan igy:IF EXIST "%A510%" (
FORFILES /P "%A510%" /S /M *.* /C "cmd /C if @isdir==FALSE if @fsize 0x22c:\Program Files 0x28x860x29\7-Zip\7z.exe0x22 a %b_backup%\%fullstamp%.zip @FILE"
)[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
válasz
sztanozs #1116 üzenetére
IF EXIST "d:\Reports\" (FORFILES /P "d:\Reports" /S /M *.* /C "cmd /C "if @isdir==FALSE if @fsize "c:\Program Files (x86)\7-Zip\7z.exe" a c:\temp\2023-02-28.zip @FILE" )
ERROR: Invalid argument/option - 'Files'.
Type "FORFILES /?" for usage.Ha a /C utáni if elől kiveszem a " akkor lefut, de a zip-et nem csinálja meg.
@Hege -
itt a kimenet és továbbra sem kreálódik meg a zip:IF EXIST "c:\temp\A510" (FORFILES /P "c:\temp\A510" /S /M *.* /C "cmd /C if @isdir==FALSE if @fsize \"\"c:\Program Files (x86)\7-Zip\7z.exe\"\" a c:\temp\2023-02-28.zip @FILE" )
[ Szerkesztve ]
A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
sztanozs
veterán
fyki:
If /C or /K is specified, then the remainder of the command line after
the switch is processed as a command line, where the following logic is
used to process quote (") characters:
1. If all of the following conditions are met, then quote characters
on the command line are preserved:
- no /S switch
- exactly two quote characters
- no special characters between the two quote characters,
where special is one of: &<>()@^|
- there are one or more whitespace characters between the
two quote characters
- the string between the two quote characters is the name
of an executable file.
2. Otherwise, old behavior is to see if the first character is
a quote character and if so, strip the leading character and
remove the last quote character on the command line, preserving
any text after the last quote character.talan igy jo lesz:
IF EXIST "%A510%" (
FORFILES /P "%A510%" /S /M *.* /C "cmd /C "if @isdir==FALSE if @fsize "c:\Program Files (x86)\7-Zip\7z.exe" a %b_backup%\%fullstamp%.zip @FILE"
)JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
válasz
Hege1234 #1114 üzenetére
Szerdán melózok legközelebb akkor még teszek egy próbát ezekkel is kíváncsiságból, de nem fűzök hozzá nagy reményt.
Amikor hexben toltam be neki az elérési utat akkor is kiirta, de futtatni nem tudta a 7z.exe-t. (echo -val szépen kiirta, de futtatáskor már hibát dobott) Tehát a cmd /c -ben történik még vmi extra huncutság@csadi0011 powershell - áhhh hagyjuk inkább. Ha belenézel a topic-ba ott is van egy nyitott kérdésem.
Ha nem másét kell heftülnöm és adott a lehetőség akkor részemről python a nyerő.[ Szerkesztve ]
A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
Hege1234
addikt
ne félj a sok idézőjeltől..
max ezt próbáld meg beletenni amit eddig csináltál
\"\"c:\Program Files (x86)\7-Zip\7z.exe\"\"
@echo off
set "A510=c:\temp\A510"
set "fullstamp=2023-02-28"
set "b_backup=\\server\backup"
IF EXIST "%A510%" (
FORFILES /P "%A510%" /S /M *.* /C "cmd /C if @isdir==FALSE if @fsize \"\"c:\Program Files (x86)\7-Zip\7z.exe\"\" a %b_backup%\%fullstamp%.zip @FILE"
)ha sehogy nem működne, valahol a gépemen van régebbről olyan script ahol használom kb ugyan így a c:\Program Files (x86) -ot ahogy te akarod majd megpróbálom megkeresni..
-
válasz
csadi0011 #1111 üzenetére
Próbáltam azt is, de azzal se ment. %PROGRAMFILES(X86)%
Környezeti változó megint egy kis túlkomplikálása a dolgoknak. A legegyszerűbb ami elsőre is működött, hogy a cmd /c -ben egy másik batch file-t hivok meg, ott frankón működött escape-lés nélkül a 7zip elérése.
De ez megint egy hibalehetőség. Később ha új gépre lesz rakva akkor ott is minden beállítást újra csinálni...
Nem akarok én bonyolult dolgokat, de a legjobb az volna, ha a jóképességű cmd tudná normálisan kezelni amit kell.[ Szerkesztve ]
A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
csadi0011
őstag
Tudsz használni %PROGRAMFILES(X86)% változót is az elérési útban. Hátha stabilabb.
De ha van rá lehetőség, nem lenne jobb környezeti parancsnak rendelni a 7z.exe-t? Akkor csak annyit kellene irnod, ut nelkul. -
Megvan a megoldás.
De hát fogyatékos a nyelv az biztos...
[link]
shorpath.cmd@ECHO OFF
echo %~s1>shortpath.cmd "C:\Program Files (x86)"
C:\PROGRA~2
És akkor a végső megoldás így néz ki. Itt már mindkét féle escapeléssel jó.IF EXIST %A510% FORFILES /P %A510% /S /M *.* /C "cmd /C "C:\PROGRA~2\7-Zip\7z.exe" a %b_backup%\%fullstamp%.zip @PATH"
IF EXIST %A510% FORFILES /P %A510% /S /M *.* /C "cmd /C ^0x22C:\PROGRA~2\7-Zip\7z.exe^0x22 a %b_backup%\%fullstamp%.zip @PATH"Végülis működik, de azért valszeg vmi orbitális bug van amiért az x86-ot, nem tudja értelmezni rendesen.
A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
Azt próbálgatom még, hogy az egész Program Files stringet hex-ben adom meg, de úgy sem jó. (természetesen az összes escapelési kombóval kipróbáltam.
IF EXIST %A510% FORFILES /P %A510% /S /M *.* /C "cmd /C if @isdir==FALSE if @fsize 0x220x630x3a0x5c0x500x720x6f0x670x720x610x6d0x200x460x690x6c0x650x730x200x280x780x380x360x290x5c0x370x2d0x5a0x690x700x5c0x370x7a0x2e0x650x780x650x22 a %b_backup%\%fullstamp%.zip @PATH"
"c:\Program Files (x86)\7-Zip\7z.exe" was unexpected at this time.
A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
-
csadi0011
őstag
Nekem nem működik a
\"
féle megoldás, de stackoverflow-on írtak"
helyett^0x22
-t. A forfiles leírásában egyébként benne is van, hogy lehet így helyettesíteni karaktereket, de nem gondoltam volna, hogy az idézést is kell.IF EXIST %A510% FORFILES /P %A510% /S /M *.* /C "cmd /C if @isdir==FALSE if @fsize ^0x22c:\Program^ Files^ ^(x86^)\7-Zip\7z.exe^0x22 a %b_backup%\%fullstamp%.zip @FILE"
Egyébként rakhatod idézőjelbe a set utáni részt, ahogy Hege1234 írta.
-
-
Hege1234
addikt
nem lehet, hogy a " " hiánya lesz a hiba?
set "A510=c:\temp\A510"
set "fullstamp=2023-02-28"
set "b_backup=\\server\backup"
IF EXIST "%A510%" (
FORFILES /P "%A510%" /S /M *.* /C "cmd /C if @isdir==FALSE if @fsize "c:\Program Files (x86)\7-Zip\7z.exe" a %b_backup%\%fullstamp%.zip @FILE"
) -
Sziasztok,
Nagyon elakadtam. Egy batch file-ba kéne beleheftülnöm egy 7zippelést, de nagyon nem akar összejönni
Itt a kiragadott részlet. A 7zip elérését vhogy nem igazán sikerül átadni. Millió féle képpen próbáltam már.set A510=c:\temp\A510\
set fullstamp=2023-02-28
set b_backup=\\server\backup
IF EXIST %A510% FORFILES /P %A510% /S /M *.* /C "cmd /C if @isdir==FALSE if @fsize "c:\Program Files (x86)\7-Zip\7z.exe" a %b_backup%\%fullstamp%.zip @FILE"Ha nem space-s könyvtárba teszem a 7zipet, műxik, ha a sima program files-be rakom és escapelem
\"c:\Program Files\7-Zip\7z.exe\"
akkor is müxik, de az x86-osból sehogy se akar menni
De mivel nem én tartom karban a rendszert ezért egy jó megoldás kéneA tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
Geripapa
aktív tag
válasz
RedHarlow #1101 üzenetére
@echo off
setlocal enableDelayedExpansion
for /r "%cd%" %%i in (*.*) do (
if not %%~nxi == "unc.txt" rm %%~nxi
)
echo Kész!
pauseendlocal
Eddig jutottam. a "unc.txt" helyére valami más kell de nem tudtam rájönni hogy mi. annyira én sem vagyok penge....De innen talán már meg tudod oldani.Segítségkéréshez: NSA320+FFP; Raspberry Pi2 Openelec/Kodi ;
-
RedHarlow
aktív tag
Sziasztok, tudna segíteni nekem valaki egy olyan bat fájl megírásában, hogy ha lefuttatom akkor egy mappa minden almappájából töröljön minden nem *unc.txt végű fájlt de úgy, hogy a mappaszerkeszet megparadjon?
Új hozzászólás Aktív témák
- Formula-1
- EAFC 25
- Kerékpárosok, bringások ide!
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- AI-szövetségbe kezd Franciaország az Egyesült Arab Emírségekkel
- Milyen billentyűzetet vegyek?
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- LEGO klub
- Elektromos autók - motorok
- További aktív témák...
Állásajánlatok
Cég: Marketing Budget
Város: Budapest