Azzal a problémával szembesültem Windows XP rendszer alatt, hogy szeretnék fájlokat kibontani batch állományból.
Parancssorban kipróbáltam:
7z.exe x -o"Program Files\Ide Tedd" Béna.zip
Figyeljétek az ékezetes betűt a fájlban!
Szépen lefut kicsomagolja a megadott könyvtárba a Béna.zip tartalmát. Na most jön a "jóság", ezt beírom egy kibont.bat fájlba és kirakom az ikonját az asztalra akkor bizony el kezd sírni, hogy nincs ilyen archívum és leáll a kicsomagolás hibaüzenettel.
Konkrétan az ékezetes fájlnevet nem tudja feldolgozni.
Na most megnéztem, hogy a dir /x mit mond a rövid 8.3-as fájlnévnek és beírtam így:
7z.exe x -o"Program Files\Ide Tedd" Bna~1.zip
Ez így tökéletes megoldás lenne, ha az a kis lenne nem lenne ott. Ugyanis ha a fájl pendrive-on van akkor a rövid név megegyezik a fájl "hosszú" nevével, tehát a dir /x az alábbi formát dobja vissza:
BÉNA.ZIP Béna.zip
Na most ezt hogyan bontsam ki ha ékezetes fájlnevet nem tudok megadni, mert ahogy nézem karakterkódolási hiba lép fel?
Lehet hogy triviális, de nem nekem :-)
- 3740 megtekintés
Hozzászólások
Notepaddal írod be a bat-ba vagy copy connal?
up:
notepad-os BAT tartalma: béna
copy con-os BAT tartalama: b,na
A notepad dilin írja, egészen pontosan ANSI-ban, míg a CMD window az ASCII-ben megy. Ennyi a gond.
- A hozzászóláshoz be kell jelentkezni
Valóban notepadban írom be a cuccot, elvégre adott a rendszerben. De akkor marad a copy con.
- A hozzászóláshoz be kell jelentkezni
Most hirtelen a Notepad++ cuccal próbálom de nem sikerül azzal sem ASCII-ba menteni.
- A hozzászóláshoz be kell jelentkezni
Mindjárt megírom mit tud a Windows amit a Linux nem topikba, hogy őrületbe kergetni a karakterkódolásával házon belül :-)
- A hozzászóláshoz be kell jelentkezni
http://www.flos-freeware.ch/notepad2.html
Ezzel tudtam megoldani, File/Encoding/Reencode... (F8) --- Central European (DOS-852) :)
- A hozzászóláshoz be kell jelentkezni
Köszönöm, holnap megnézem.
- A hozzászóláshoz be kell jelentkezni
lol! az a rohadt karakter kódolás! hogy mennyire nem tud hosszú távra tervezni az ember?! belegondolok mitől mentette volna meg a fejlesztőket, ha a nyomorult 1 byte helyett legalább 2-ben gondolkodnak (akár char, akár dátum) :)
- A hozzászóláshoz be kell jelentkezni
Amikor a számítástechnika ott tartott, hogy karakterkódoláson gondolkoztak a fejlesztők, akkor egyrészt érthető módon csak angolszász nyelvterületben gondolkoztak, másrészt az, hogy egy karakter egy vagy két byte, annyira nem mindegy, hogy éppen megkétszerezi a szövegfile-ok méretét. Anno ez azért annyira nem volt mindegy.
Én inkább azt nem értem, ha már létezik UNICODE és annak folyományaként az UTF8, miért nem lehet már vagy tíz éve azt használni?
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
ez is igaz
- A hozzászóláshoz be kell jelentkezni
A dátum esetében meg komoly bevételtől "mentett" volna meg egyeseket, mert tutira voltak, akik kaszáltak a y2k miatt :)
- A hozzászóláshoz be kell jelentkezni
B?na.zip vagy B*.zip, vagy akar *.zip is kell hogy mukodjon
- A hozzászóláshoz be kell jelentkezni
Ránézek a megoldásodra, nekem így is jó ha kimaszkolom az ékezetes betűket, bár jobb lett volna ha simán elmentik bena.zip néven :-)
- A hozzászóláshoz be kell jelentkezni
Van még1 megoldás:
Megcsinálod notepad-ban, elmented UNICODE-ban, és CMD window-ban pedig tolsz egy ilyet
type unicode.bat > ascii.bat
És láss csodát! Vagy inkább nyomorultságot. :D
Továbbá megoldás ha:
batch.bat tartalma:
@echo off
7z.exe x -o"Program Files\Ide Tedd" %1
A parancsikon pedig ez:
X:\PATH\TO\BATCH\batch.bat "béna.zip"
így elkerülöd a karakterkódolást.
- A hozzászóláshoz be kell jelentkezni
Hogy is van az, hogy a Windows GUI 1250-es, a DOS/CMD 852-es codepage-t használ? :-)
Azt mondjuk nem tudom, hogy a filenevek melyik CP szerint kerülnek tárolásra.
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
Lol mert notepad-ból 1250, cmd-ből 852. :D
- A hozzászóláshoz be kell jelentkezni
Engem azzal baszott fel, hogy 2 külön fájlrendszer 2 külön tárolási mód.
Rövid név:
NTFS: bna~1.zip
FAT32: BÉNA.ZIP
- A hozzászóláshoz be kell jelentkezni
Elhiszem...
- A hozzászóláshoz be kell jelentkezni
A Windows rejtelmei. :-) Éppezért még 2010-ben is kerülendők az ékezetes filenevek. Csak a szívás van velük.
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
Amíg windows gui-ról mocorogsz, még nem "nagyon" van gond, de command line-ben előjön rendesen.
- A hozzászóláshoz be kell jelentkezni
Szerintem csak az XP-nél. Vistán létrehoztam egy BÉNA.txt nevű file-t Windows Explorerben, majd kilistáztam cmd és PowerShell alól:
cmd.exe:
C:\Users\saabi>dir *.txt
Volume in drive C is PC COE
Volume Serial Number is 8A8B-E13B
Directory of C:\Users\saabi
04/20/2010 21:26 0 BÉNA.txt
1 File(s) 0 bytes
0 Dir(s) 72,217,784,320 bytes free
C:\Users\saabi>
PowerShell:
PS C:\Users\saabi> Get-ChildItem BÉNA.txt
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Users\saabi
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 4/20/2010 9:26 PM 0 BÉNA.txt
PS C:\Users\saabi>
Ugyanakkor cmd.exe alatt ha futtattam a bena.bat-ot:
C:\Users\saabi>type bena.bat
copy lipsum.txt B╔NA.txt
7z.exe -a B╔NA.zip B╔NA.txt
C:\Users\saabi>bena.bat
C:\Users\saabi>copy lipsum.txt B╔NA.txt
1 file(s) copied.
C:\Users\saabi>7z.exe -a B╔NA.zip B╔NA.txt
Error:
Incorrect command line
C:\Users\saabi>
Az bizony sikertelen. A PowerShell Get-Content parancsa viszont normálisan listázza a file tartalmát, talán a batch file futtatása sem okozna neki gondot. Nekem viszont nem volt hajlandó futtatni, én meg nem tudom hogyan vehetném rá.
Összességében, ha nekem kellene ezt a feladatot megoldani, akkor PowerShell felé tapogatóznék, mert a cmd.exe-nek nagyon nem megy a CP1250.
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
mezei DOS-os edit -el próbáld a bat fájlt írni.
- A hozzászóláshoz be kell jelentkezni
Én próbáltam de ott nekem az ékezetet nem akarta írni... de okával nem csekkoltam.
- A hozzászóláshoz be kell jelentkezni
Tiszteletem!
Apróság, ami a témába vágna.:
win2003 R2 Eng.-n diruse-el, local gépen szeretnék egy ékezetes mappa tartalmat "megszámoltatni", sajnos sikertelenül.
Idevágó rész.:
cd e:\ékezetes
c:\Progra~1\suppor~1\diruse /* /m e:\ékezetes > e:\idementeni
Minden egyéb nem ékezetes path-al megy, megosztással, mappelt cuccokkal, stb...
Valakinek tipp?
Köszi
udv
letix
-----------------------------------------
Linux alapparancsok, kezdőknek
- A hozzászóláshoz be kell jelentkezni
Nos, ideiglenesen megoldottam a dolgot.
Felmappeltem a gépre a saját lemezén levő ékezetes nevű megosztást.
Így OK, bár elég botcsinálta megoldás.
udv
letix
-----------------------------------------
Linux alapparancsok, kezdőknek
- A hozzászóláshoz be kell jelentkezni