Comando WinRar per comprimere (zip) ogni file nella cartella con un altro file


2

Ho un file di testo che voglio archiviare con ogni file in una cartella specifica.

Ad esempio, la cartella è: File1, File2, File3, e TextDoc1.

Voglio creare File1.zip(che include File1e TextDoc1), File2.zip(che include File2e TextDoc1) e File3.zip(che include File3e TextDoc1).

Esiste un comando batch che posso eseguire (come .bat) per creare questi archivi invece di crearli singolarmente? Sto usando listfile, ma ho ancora bisogno di creare ogni .txtfile con i nomi dei file in esso.

Questo è quello che ho usato:

"C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File1.zip" @"File1.txt"
"C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File2.zip" @"File2.txt"

eccetera.

Zip o Rar va bene.

Risposte:


1

@echo off for %%f in (*) do (       if not %%f==TextDoc1 (            (il tuo comando per creare %%~nf.zipcontenente %%fe TextDoc1)       ) )

for %%f in (*)significa per ogni file nella directory corrente - DOil comando per creare il file ZIP (i cui dettagli sono irrilevanti) - tranne quando si considera il file TextDoc1 stesso. Salta questo, altrimenti creerai un file TextDoc1.zip che contiene due copie di TextDoc1 (o forse solo uno, a seconda di come funziona WinRAR).

L'unica cosa difficile è la %%~nf, che è la parte del nome file di %%f(con l'estensione rimossa). Ho usato questo perché, mentre hai dato File1, File2 e File3 come nomi di file di esempio, immagino che tu abbia anche File4.txt, résumé.doc, flower.jpg, ecc. Sto facendo la supposizione selvaggia che tu voglia il File ZIP da chiamare File4.zip, résumé.zip e flower.zip, anziché File4 .txt .zip, résumé .doc .zip e flower .jpg .zip. Ovviamente ciò significa che se ci sono schedule.mpp e schedule.xls, potremmo avere un problema.


Grazie per l'aiuto e chiarimenti. Sono molto nuovo nell'uso dei comandi, quindi questo codice è stato un'ottima base per il mio sistema.
Luca,

0

Ecco un batch che puoi provare:

@echo off

rem Set highest number
set /a highcount=3

rem Initialize counter to 1
set /a counter=1

:loop
start /wait "C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File%counter%.zip" "File%counter%"
start /wait "C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File%counter%.zip" "TextDoc1"

rem Increment the counter by 1
set /a counter+=1

rem If the counter is less than or equal to "highcount", then loop and do the next file.
if %counter% LEQ %highcount% goto loop

Questo dovrebbe creare 3 file zip denominati File1.zip, File2.zip e File3.zip, ognuno con un file "File #" corrispondente e lo (stesso) "TextDoc1" in essi.


Grazie per la tempestiva risposta! Siamo spiacenti, i file nella cartella non sono necessariamente numerati in sequenza. Sarebbe più appropriato dire FileABC, FileDEF, FileGHI e TextDoc1. Grazie per il tuo tempo / impegno!
Luca,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.