- Luck Dragon: Asszociációs játék. :)
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Gurulunk, WAZE?!
- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- vrob: Az IBM PC és a játékok a 80-as években
- sziku69: Fűzzük össze a szavakat :)
- zebra_hun: Hűthető e kulturáltan a Raptor Lake léghűtővel a kánikulában?
- Magga: PLEX: multimédia az egész lakásban
Ú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? -
-
-
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. -
-
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%
-
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?
-
-
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")
-
Tamy
senior tag
Téves, benéztem valamit.
-
Tamy
senior tag
válasz
Fire/SOUL/CD #1183 üzenetére
Köszönöm, érdekes
-
@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.
-
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
-
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
-
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
-
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
-
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. -
-
sonar
addikt
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. -
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
-
sonar
addikt
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? -
-
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)!?
-
-
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!
-
-
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.
-
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.
-
@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"
-
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!
-
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 -
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
-
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!
-
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. -
sztanozs
veterán
Nem vagyok benne biztos, de szerintem EnableDelayedExpansion-t kell hasznalni.
https://ss64.com/nt/delayedexpansion.html -
sonar
addikt
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? -
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. -
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
} -
sztanozs
veterán
-
-
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
}
}
} -
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. -
sonar
addikt
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'. -
-
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)? -
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? -
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"
) -
sonar
addikt
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" )
-
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"
) -
sonar
addikt
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ő. -
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..
-
sonar
addikt
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. -
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. -
sonar
addikt
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.
-
sonar
addikt
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.
-
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"
) -
sonar
addikt
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éne -
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. -
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
Hirdetés
- One otthoni szolgáltatások (TV, internet, telefon)
- Milyen billentyűzetet vegyek?
- SD-kártyát vennél? Ezért ne csak a GB-ot nézd! – Tech Percek #9
- A fociról könnyedén, egy baráti társaságban
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
- Gaming notebook topik
- Atomenergiával dübörögnek tovább az Amazon adatközpontok, SMR-ek is jöhetnek
- Luck Dragon: Asszociációs játék. :)
- Plazma TV topic
- További aktív témák...
- Apple Ipad 10.generáció
- Új HP Pavilion x360 14-ek Érintős hajtogatós Laptop Tab 14" -35% i5-1335U 8/512 FHD IPS Iris Xe
- RTX 4080 SUPER,16GB. Ryzen 7 7800X3D, 32 RAM Fury RGB! Garancia!
- Asztali PC , i7 9700K , RX 5700 XT , 32GB DDR4 , 500GB NVME , 1TB HDD
- Dell Inspiron 5406 2-in-1i5-1135G7 16GB DDR4 3200 512GB NVME 14" FHD Érintőkijelző W11Pro
- DOKKOLÓ BAZÁR! Lenovo, HP, DELL és egyéb más dokkolók (TELJES SZETTEK)
- BESZÁMÍTÁS! Gigabyte H610M i5 13400F 16GB DDR4 512GB SSD RX 6700XT 12GB DeepCool MATREXX 40 650W
- MSI CreatorPro Z16P - i7-12700H, RTX A5500, értintőkijelző
- Lenovo Legion Pro 5 16IRX9
- iKing.Hu - Motorola Edge 50 Ultra - Nordic Wood - Használt, karcmentes
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest