Avatar billede alapalooza Nybegynder
23. marts 2006 - 08:36 Der er 19 kommentarer og
1 løsning

Nedpakning til zip via batch eller lign.

Jeg har følgende problemstilling. Jeg skal have lavet en batch rutine eller lign som kan pakke nogle filer til zip. Filerne som skal pakkes hedder "OIN********.XML" f.eks "OIN13243111.XML" og skal efter de er blevet pakket til zip hedde "OIN********.E2O" f.eks "OIN13243111.E2O". Alle filerne ligger i samme mappe og der vil ofte ligge mange filer på samme tid. Batch rutinen skal så køre med jævne mellemrum og pakke alle filer i mappen.

Jeg har prøvet mig lidt frem med winzip command line commands. Men har ikke kunne få det til at lave en zip fil for hver xml fil eller få det til at lave zip filen med .E2O som extension i stedet for .zip.

Håber der er en som kan hjælpe eller som har nogle gode idéer.
Avatar billede soreno Praktikant
23. marts 2006 - 09:05 #1
Skal xml filerne slette når de er zippet ?
Avatar billede alapalooza Nybegynder
23. marts 2006 - 09:06 #2
Nej, der skulle ikke være behov for at de bliver slettet.
Avatar billede soreno Praktikant
23. marts 2006 - 09:07 #3
Skal alle filer i directoriet så zippes hver gang scriptet køres ?
Avatar billede alapalooza Nybegynder
23. marts 2006 - 09:09 #4
Ja, alle XML filerne i mappen skal pakkes til zip. En zip fil for hver xml fil. XML filerne kopieres efter følgende til en backup mappe inden de slettes.
Avatar billede soreno Praktikant
23. marts 2006 - 09:22 #5
Eksempel:

@echo off
for %%i IN (OIN*.xml) DO call :go "%%i"
goto :end

:go
    echo filename = %1
    type %1
    echo.
    echo done!
    echo.

:end
Avatar billede soreno Praktikant
23. marts 2006 - 09:33 #6
Mere konkret:

@echo off
for %%i IN (OIN*.xml) DO call :go "%%i"
goto :end

:go
    zipdims %1
    rename %1 %1.e2o

:end
Avatar billede alapalooza Nybegynder
23. marts 2006 - 09:57 #7
C:\DNCOM\PBS\Outbox>testzip

PKZIP (R)  FAST!  Create/Update Utility  Version 2.04g  02-01-93
Copr. 1989-1993 PKWARE Inc.  All Rights Reserved.  Shareware Version
PKZIP Reg. U.S. Pat. and Tm. Off.  Patent No. 5,051,745

■ 80486 CPU detected.
■ XMS version 2.00 detected.
■ DPMI version 0.90 detected.
■ Using Normal Compression.

Creating ZIP: OIN13243111.XML
  Adding: OIN132~1.XML  Deflating (96%), done.
  Adding: PKZIP.EXE    Deflating ( 1%), done.
  Adding: TESTZIP.BAT  Deflating (10%), done.
Avatar billede alapalooza Nybegynder
23. marts 2006 - 09:58 #8
Filen endte med at hedde OIN13243111.XML.E2O samt alle filerne i mappe blev pakket ned.
Avatar billede alapalooza Nybegynder
23. marts 2006 - 09:59 #9
C:\DNCOM\PBS\Outbox>pkzip /?

PKZIP (R)  FAST!  Create/Update Utility  Version 2.04g  02-01-93
Copr. 1989-1993 PKWARE Inc.  All Rights Reserved.  Shareware Version
PKZIP Reg. U.S. Pat. and Tm. Off.  Patent No. 5,051,745


PKZIP /h[1] for basic help  PKZIP /h[2|3|4] for other help screens.


Usage:  PKZIP [options] zipfile [@list] [files...]


      Simple Usage:  PKZIP zipfile file(s)...
                        |      |      |
Program -----------------      |      |
                                |      |
New zipfile to create ----------      |
                                      |
File(s) you wish to compress ----------

The above usage is only a very basic example of PKZIP's capability.


Press 2 for more options (including spanning & formatting), press 3 for
advanced options, 4 for trouble shooting options, any other key to quit help.
Avatar billede alapalooza Nybegynder
23. marts 2006 - 09:59 #10
Usage:  PKZIP [options] zipfile [@list] [files...]

-a              Add files
-b[drive]      create temp zipfile on alternative drive
-d              Delete files
-e[x,n,f,s,0]  use [eXtra|Normal (default)|Fast|Super fast|NO compression]
-f              Freshen files
-l              display software License agreement
-m[f,u]        Move files [with Freshen | with Update]
-u              Update files
-p|P            store Pathnames|p=recursed into|P=specified & recursed into
-r              Recurse subdirectories
-s[pwd]        Scramble with password [If no pwd is given, prompt for pwd]
-v[b][r][m][t][c] View .ZIP [Brief][Reverse][More][Technical][Comment] sort by
  [d,e,n,o,p,s] [Date|Extension|Name|natural Order(default)|Percentage|Size]
-&[f|l|u        Span disks [Format|format Low density|Unconditional format|
  ul|w|v]        Unconditional Low density|Wipe disk|enable dos Verify|
  [s[drive]]        Back up entire disk w/ subdirs (-rp) [drive to back up]]

*** For more information, please consult the user manual ***
Press 1 for basic options, 3 for advanced options, 4 for trouble shooting
options, any other key to quit help.
Avatar billede alapalooza Nybegynder
23. marts 2006 - 10:00 #11
Tror måske at der er et problem med at pkzip jeg har brugt ikke understøtter mere end 8 chars i filnavnet :/
Avatar billede soreno Praktikant
23. marts 2006 - 10:07 #12
Kan du bruge et andet pakkeprogram ?
F.eks. gzip eller lign.
http://unxutils.sourceforge.net/
Avatar billede alapalooza Nybegynder
23. marts 2006 - 10:58 #13
Nu har jeg hentet gzip & prøvet at køre bat filen med 2 filer i biblioteket.
OIN13243111.XML & OIN13243785.XML.
---------------------------------------------
testzip.bat
for %%i IN (OIN*.XML) DO call :go "%%i"
goto :end

:go
  gzip %1
  rename %1 %1.E2O

:end

-------------------------------------------
C:\DNCOM\PBS\Outbox>testzip

C:\DNCOM\PBS\Outbox>for %i IN (OIN*.XML) DO call :go "%i"

C:\DNCOM\PBS\Outbox>call :go "OIN13243111.XML"

C:\DNCOM\PBS\Outbox>gzip "OIN13243111.XML"

C:\DNCOM\PBS\Outbox>rename "OIN13243111.XML" "OIN13243111.XML".E2O
The system cannot find the file specified.
C:\DNCOM\PBS\Outbox>call :go "OIN13243785.XML"

C:\DNCOM\PBS\Outbox>gzip "OIN13243785.XML"

C:\DNCOM\PBS\Outbox>rename "OIN13243785.XML" "OIN13243785.XML".E2O
The system cannot find the file specified.

C:\DNCOM\PBS\Outbox>goto :end

C:\DNCOM\PBS\Outbox>
---------------------------------------------------
Filerne blev pakket og hedder nu:
OIN13243111.XML.gz & OIN13243785.XML.gz
Avatar billede alapalooza Nybegynder
23. marts 2006 - 11:01 #14
Filerne skulle gerne hedde OIN13243111.E20 & OIN13243785.E2O.
Det gik lidt galt under rename.
Avatar billede soreno Praktikant
23. marts 2006 - 11:01 #15
Den simple løsning må være:
rename %1.gz %1.E2O
Avatar billede soreno Praktikant
23. marts 2006 - 11:02 #16
Vil det sige de ikke må hedde:
OIN13243111.XML.gz.E2O

?
Avatar billede alapalooza Nybegynder
23. marts 2006 - 11:06 #17
Tæt på.

C:\DNCOM\PBS\Outbox>testzip

C:\DNCOM\PBS\Outbox>for %i IN (OIN*.XML) DO call :go "%i"

C:\DNCOM\PBS\Outbox>call :go "OIN13243111.XML"

C:\DNCOM\PBS\Outbox>gzip "OIN13243111.XML"

C:\DNCOM\PBS\Outbox>rename "OIN13243111.XML".gz "OIN13243111.XML".E2O
C:\DNCOM\PBS\Outbox>call :go "OIN13243785.XML"

C:\DNCOM\PBS\Outbox>gzip "OIN13243785.XML"

C:\DNCOM\PBS\Outbox>rename "OIN13243785.XML".gz "OIN13243785.XML".E2O

C:\DNCOM\PBS\Outbox>goto :end

C:\DNCOM\PBS\Outbox>
------------------------------------------------------------------------------

Nu hedder filerne OIN13243111.XML.E2O & OIN13243785.XML.E2O.

De skulle gerne ikke have XML med i filnavnet.. Så de bare hedder OIN13243111.E2O.
Avatar billede soreno Praktikant
23. marts 2006 - 11:08 #18
Så kan du gøre sådan:
@echo off
for %%i IN (OIN*.xml) DO call :go %%~ni %%~xi
goto :end

:go
    gzip %1%2
    rename %1%2.gz %1.e20

:end


Men det fejler hvis der er whitespace (mellemrum) i filnavnet.
Avatar billede soreno Praktikant
23. marts 2006 - 11:10 #19
Avatar billede alapalooza Nybegynder
23. marts 2006 - 11:15 #20
Sygt nok... lortet vi sgu... det er bare i orden :)

Det må jeg tage hatten af for, du er vild nok.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester