Hirdetés

2024. május 2., csütörtök

Gyorskeresés

Hozzászólások

(#1101) RedHarlow


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?

(#1102) Geripapa válasza RedHarlow (#1101) üzenetére


Geripapa
aktív tag

@echo off
setlocal enableDelayedExpansion 
for  /r "%cd%" %%i in (*.*) do (
    
    if not %%~nxi == "unc.txt"     rm %%~nxi
)
echo Kész!
pause
endlocal

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 ;

(#1103) Geripapa válasza Geripapa (#1102) üzenetére


Geripapa
aktív tag

az rm után csak %%~i kel nem nxi....

Segítségkéréshez: NSA320+FFP; Raspberry Pi2 Openelec/Kodi ;

(#1104) sonar


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

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1105) Hege1234 válasza sonar (#1104) üzenetére


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"
)

(#1106) sonar válasza Hege1234 (#1105) üzenetére


sonar
addikt

Te nem toltad kicsit túl az idézőjeleket? Látatlanba is a SET-eknél az egész sort idézőjelek közé raktad ami tuti hibás.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1107) csadi0011 válasza sonar (#1104) üzenetére


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.

(#1108) sonar válasza csadi0011 (#1107) üzenetére


sonar
addikt

Egy fokkal jobb, de még vmi mindig hibádzik.
Ezt dobja vissza:
"c:\Program Files (x86)\7-Zip\7z.exe" was unexpected at this time.

[ Szerkesztve ]

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1109) sonar válasza sonar (#1108) üzenetére


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.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1110) sonar


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.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1111) csadi0011


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.

(#1112) sonar válasza csadi0011 (#1111) üzenetére


sonar
addikt

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!

(#1113) csadi0011 válasza sonar (#1112) üzenetére


csadi0011
őstag

Powershell nem lenne megoldás? Vagy nem forfiles paranccsal csinálni?

(#1114) Hege1234 válasza sonar (#1112) üzenetére


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..

(#1115) sonar válasza Hege1234 (#1114) üzenetére


sonar
addikt

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!

(#1116) sztanozs válasza sonar (#1112) üzenetére


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...

(#1117) sonar válasza sztanozs (#1116) üzenetére


sonar
addikt

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!

(#1118) sztanozs válasza sonar (#1117) üzenetére


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...

(#1119) sonar válasza sztanozs (#1118) üzenetére


sonar
addikt

Meg se próbálom, már irtam lentebb (#1109), hogy az egész stringet hex-ben adtam be neki és az sem hozta az elvárt eredményt.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1120) sztanozs válasza sonar (#1119) üzenetére


sztanozs
veterán

Sajna nincs fent a 7z (es nem is rakhatom fel a ceges gepre), ugyhogy kiprobalni nem tudom :/

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...

(#1121) sonar válasza sztanozs (#1120) üzenetére


sonar
addikt

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!

(#1122) mepet válasza sonar (#1121) üzenetére


mepet
addikt

Anno kuzdottem hasonloval, a vegen a megoldas az lett, hogy az exe fajlt atmasoltam a munkakonyvtarba, futtattam ott, majd toroltem. Persze ehhez standalone exe kell.

(#1123) sonar válasza mepet (#1122) üzenetére


sonar
addikt

Ugye tudod, hogy a cmd /c hívásnál a munkakönyvtár mi? :N Oda nem másolunk.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1124) csadi0011 válasza sonar (#1108) üzenetére


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.
Az if @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 ]

(#1125) sztanozs válasza sonar (#1121) üzenetére


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...

(#1126) csadi0011 válasza sztanozs (#1125) üzenetére


csadi0011
őstag

Neked ez hogy működik ^ nélkül? Ha 0x22-t írok ^0x22 helyett, akkor nekem már nem jó.
Amúgy sem értem, hogy miért értelmezné a szoftver a 0x22-t másnak, mint ami. Mi van ha a mappanévben vagy fájlnévben van 0x22? Nem tiltott és nem speciális.

(#1127) sztanozs válasza csadi0011 (#1126) üzenetére


sztanozs
veterán

ez a forfiles sajatja, nem a cmd/c ertelmezi, forfile commandban nem kell escape-elni

[ 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...

(#1128) csadi0011 válasza sztanozs (#1127) üzenetére


csadi0011
őstag

Azt értem, hogy a forfiles /c " után érvényes, de miért működik escape nélkül?
Én neveztem már el mappát win10x64-nek.

Veszélyes...

[ Szerkesztve ]

(#1129) sonar


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'.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1130) sztanozs válasza sonar (#1129) üzenetére


sztanozs
veterán

Nekem Win10 van, lehet, hogy ez a kulonbseg...

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...

(#1131) sztanozs válasza csadi0011 (#1128) üzenetére


sztanozs
veterán

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...

(#1132) sztanozs válasza sonar (#1129) üzenetére


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...

(#1133) sonar válasza sztanozs (#1132) üzenetére


sonar
addikt

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!

(#1134) sztanozs válasza sonar (#1133) üzenetére


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...

(#1135) sonar válasza sztanozs (#1134) üzenetére


sonar
addikt

Le is fut rendesen.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1136) include777 válasza RedHarlow (#1055) üzenetére


include777
aktív tag

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

(#1137) sonar válasza sztanozs (#1134) üzenetére


sonar
addikt

Most néztem meg jobban a kódot és értelmezni próbáltam, ezt %%~zG el tudod magyarázni?

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1138) sztanozs válasza sonar (#1137) üzenetére


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...

(#1139) sonar válasza sztanozs (#1138) üzenetére


sonar
addikt

Köszönöm, így tökéletes. Ma is tanultam valami újat.

[ Szerkesztve ]

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1140) sztanozs válasza sonar (#1139) üzenetére


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...

(#1141) sonar válasza sztanozs (#1140) üzenetére


sonar
addikt

Ez a trükk megvan. Csak a példában egyszerűbb volt fix-en megadni.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1142) sonar


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:\Folder8

Kézzel lefuttatva akárhányszor csinálom mindig jó. :Y
Itt már megint mi a bánat van? :F

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1143) sztanozs válasza sonar (#1142) üzenetére


sztanozs
veterán

Nem vagyok benne biztos, de szerintem EnableDelayedExpansion-t kell hasznalni.
https://ss64.com/nt/delayedexpansion.html

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...

(#1144) sonar válasza sztanozs (#1143) üzenetére


sonar
addikt

Teszek egy próbát.
Elég egyszer beszúrni a batch elejére?

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1145) sztanozs válasza sonar (#1144) üzenetére


sztanozs
veterán

Igen eleg egyszer kiadni a
SETLOCAL EnableDelayedExpansion
parancsot, ha menet kozben ki akarod valamiert kapcsolni akkor kell csak a
SETLOCAL 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...

(#1146) Pöttö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! :R

A sport a legjobb kikapcsolódás...

(#1147) sztanozs válasza Pöttön (#1146) üzenetére


sztanozs
veterán

https://ss64.com/nt/timeout.html

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...

(#1148) Pöttön válasza sztanozs (#1147) üzenetére


Pöttön
őstag

Köszönöm!
A timeout parancsal tökéletesen működik! :R

A sport a legjobb kikapcsolódás...

(#1149) PioDVD


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. :)

(#1150) sztanozs válasza PioDVD (#1149) üzenetére


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...

Copyright © 2000-2024 PROHARDVER Informatikai Kft.