PDA

View Full Version : File batch Mi date una mano?


toz
09-07-2002, 00:46
Spero che abbiate la compassione d'aiutare un povero disgraziato.........ù :D
Devo fare questo sotto win xp

@ECHO OFF
ECHO " "
ECHO " COPIA SU CD-RW DEI DATI DI: "
ECHO " "
ECHO " DOCUMENTI - "
ECHO " "
ECHO " Premere un tasto per iniziare o Ctrl+C per terminare "
ECHO " "
PAUSE
XCOPY C:\DOCUMENTI\*.* E:\DOCUMENTI /E

Come faccio a far compiere l'operazione ad E che è un masterizzatore????

lombardp
09-07-2002, 07:43
Originariamente inviato da toz
[B]
Come faccio a far compiere l'operazione ad E che è un masterizzatore????

Che io sappia è impossibile! :(

Se dovessi trovare un modo di farlo, io indagherei sul Windows Scripting Host (il linguaggio di script di Windows) con il quale richiamare le funzionalità di masterizzazione messe a disposizione dal Windows Media Player.

cionci
09-07-2002, 08:07
Usa un programma per masterizzare da DOS ;)
Mi sembra che te lo abbiano già consigliato nell'altro thread...

toz
09-07-2002, 10:12
Originariamente inviato da lombardp
[B]

Che io sappia è impossibile! :(




Perchè impossibile? se esistessero dei driver dos del mast dove il comando copy(sul masterizzatore) faccia eseguire la copia del cd.....

x cionci....il problema è che a me non serve solo masterizzare da dos, bensì(come ti ricorderai :p ) mi serve di masterizzare delle determinate cartelle e ho pensato che crare un file batch che dice quali cartelle copiare sia la cosa migliore......o avete qualche altra idea ??
Cmq grazie x la disponibilità

cionci
09-07-2002, 10:22
Originariamente inviato da toz
[B]x cionci....il problema è che a me non serve solo masterizzare da dos, bensì(come ti ricorderai :p ) mi serve di masterizzare delle determinate cartelle e ho pensato che crare un file batch che dice quali cartelle copiare sia la cosa migliore......o avete qualche altra idea ??
Cmq grazie x la disponibilità
Appunto...invece di richiamare xcopy richiami un compressore per DOS passandogli i parametri (in questo modo l'archivio ti mantiene gli attributi) e poi masterizzi il file compresso tramite il software di masterizzazione per DOS passadogli i comandi adatti...

lombardp
09-07-2002, 10:27
Originariamente inviato da toz
[B]
Perchè impossibile? se esistessero dei driver dos del mast dove il comando copy(sul masterizzatore) faccia eseguire la copia del cd.....


Infatti ho detto che io sappia... ;)

Comunque, se trovi la soluzione... interessa anche a me!!! :)

toz
09-07-2002, 10:59
ho trovato questa cosina..... in pratica è in pascal e io non ci capisco nulla :( uses ATAPI;

type PCDMode=^TCDMode;
TCDMode=record
Header:TModeParametersHeader;
PSPageCode:byte; {PS bit 7}
{PageCode bits 0-6}
PageLength:byte; {=$32}
TestFlagWriteType:byte; {TestFlag bit 4}
{Write type bits 0-3}
MSFPCopyTrackMode:byte; {MS (Multisession) bits 6-7}
{FP bit 5}
{Copy bit 4}
{Track mode bits 0-3}
DataBlockType:byte; {bits 0-3}
Reserved1:array[1..2] of byte;
HostApplicationCode:byte; {bits 0-5}
SessionFormat:byte;
Reserved2:byte;
PacketSize:longint;
AudioPauseLength:word;
MCVAL:byte; {bit 7}
MediaCatalogNumber:array[1..13] of byte;
ZeroMC:byte;
AFRAMEMC:byte; {=$00}
TCVAL:byte; {bit 7}
CountryCode:byte;
InternationalStandardRecordingCode:byte;
OwnerCode:array[1..3] of byte;
YearOfRecording:word;
SerialNumber:array[1..5] of byte;
ZeroTC:byte;
AFRAMETC:byte;
Reserved3:byte;
SubHeader:array[0..3] of byte;

end;
var Dev:PATAPIDevice;
TOC:PTOC;
Size:word;
WriteBlocks,StartWrite:longint;
Data:PWordArray;
imagef:file;
ch:char;
begin


Assign(imagef,Paramstr(1));
{$I-}
Reset(imagef,1);
{$I+}
if IOResult<>0 then
begin
writeln('Image file: ',Paramstr(1),' not found.');
exit;
end;
if (Filesize(imagef)mod 2048)>0 then
begin
writeln('The size of the image-file is not correct.');
writeln('Image file seems to be corrupt, abort ...');
close(imagef);
exit;
end;
WriteBlocks:=FileSize(imagef) div 2048;
if (WriteBlocks=0) then
begin
writeln('Size of image file is zero, hmm...');
close(imagef);
exit;
end;

Dev:=New(PATAPIDevice,Init(DRV_SLAVE,1,RESET_DRIVE));
Getmem(Data,MAX_SENSEBUFFER);
Dev^.ModeSense(0,$05,Data^,Size);
with PCDMode(Data)^ do
begin
TestFlagWriteType:=$00+$01;
MSFPCopyTrackMode:=0+0+0+4;
DataBlockType:=$08;
HostApplicationCode:=0;
SessionFormat:=0;
PacketSize:=0;
AudioPauseLength:=BigEndianWord(0);
FillChar(MediaCatalogNumber,Sizeof(MediaCatalogNumber),0);
FillChar(InternationalStandardRecordingCode,
SizeOf(InternationalStandardRecordingCode),0);
FillChar(SubHeader,Sizeof(SubHeader),0);
end;
if not Dev^.ModeSelect(Data^,Size) then
begin
writeln('Initialisation of data-writing failed.');
Freemem(Data,MAX_SENSEBUFFER);
Dispose(Dev,Done);
Halt;
end;
Freemem(Data,MAX_SENSEBUFFER);

Getmem(Data,$FFF8);
Dev^.ReadDiscInformation(Data^,$8000);

if PDiscInformation(Data)^.LastTrackInLastSession=1 then
begin
Dev^.ReadTrackInformation(Data^,RTI_TRACK,
PDiscInformation(Data)^.LastTrackInLastSession,$8000);
if ((PTrackInformation(Data)^.TrackType and $40)=0)
or((PTrackInformation(Data)^.NWAValid and 1)=0) then
writeln('Cannot write to CD. Closed ? Broken ?') else
begin
if BigEndianLongint(PTrackInformation(Data)^.FreeBlocks)<
WriteBlocks then
begin
writeln('There is not enough space to store');
writeln('the complete image, abort ...');
Dispose(Dev,Done);
FreeMem(Data,$FFF8);
Close(imagef);
exit;
end;

StartWrite:=BigEndianLongint(
PTrackInformation(Data)^.NextWritableAddr);
writeln('Writing blocks left:');

while (WriteBlocks>0) do
begin
if WriteBlocks>26 then Size:=26 else Size:=WriteBlocks;
BlockRead(imagef,Data^,MAX_CDDATABLOCK*Size);
Dev^.WriteCDInit(StartWrite,Size,MAX_CDDATABLOCK*Size);
if not Dev^.PIODataOut(Data^,MAX_CDDATABLOCK*Size) then
begin
writeln('Error occured while data transfer.');
Break;
end;
while (Dev^.GetStatus and (AST_BSY or AST_DRQ))>0 do;
if (Dev^.GetStatus and AST_CHECK)>0 then
begin
writeln('Error occured while writing.');
Break;
end;

Inc(StartWrite,Size);
Dec(WriteBlocks,Size);
write('Blocks left: ',WriteBlocks,' ',#13);

end;
if not Dev^.SyncCache(true) then
writeln('Warning: Synccache failed.');
write('Closing Track ...');

while not Dev^.TestUnitReady do;

Dev^.CloseTrackSession(CTST_TRACK,1,true);

while (Dev^.GetStatus and AST_BSY)>0 do;
if (Dev^.GetStatus and AST_CHECK)>0 then
writeln(#10,#13,'Warning: The CD could not be closed.')
else
begin
while not Dev^.TestUnitReady do;
writeln(' completed.');
end;

Close(imagef);
end;
end else
writeln('CD is not empty. Writing only to an EMPTY cd-rom.');
Freemem(Data,$FFF8);

write('Finalize CD ? ');
repeat
ch:=Upcase(readkey);
until ch in ['Y','N'];
writeln(ch);
if ch='Y' then
begin
Dev^.CloseTrackSession(CTST_SESSION,0,true);
while (Dev^.GetStatus and AST_BSY)>0 do;
if (Dev^.GetStatus and AST_CHECK)=0 then
begin
write('Closing CD ... This takes about 2 minutes ... ');
while not Dev^.TestUnitReady do;
write(' completed.'+#10+#13+'Ejecting ... ');
Dev^.StartStopUnit(true,false,true);
writeln('done.');
end else
begin
writeln('Fixation failed.');
Dev^.RequestSense;
writeln('Sensekey: ',Dev^.SenseBuffer^.ILISenseKey);
writeln('ASC: ',Dev^.SenseBuffer^.ASC);
writeln('ASCQ: ',Dev^.SenseBuffer^.ASCQ);
end;
end;
Dispose(Dev,Done);
write('Do you want to erase the image-file ? ');
repeat
ch:=Upcase(readkey);
until ch in ['Y','N'];
writeln(ch);
if ch='Y' then Erase(imagef);
end.

Da quello che ho capito va a copiare un immagine

:confused: ma se io li volessi far copiare ste fmose e benedette cartelle?

Forza raga pizza e birra per tutti se ce la facciamo... :D

toz
09-07-2002, 11:06
Originariamente inviato da cionci
[B]
Appunto...invece di richiamare xcopy richiami un compressore per DOS passandogli i parametri (in questo modo l'archivio ti mantiene gli attributi) e poi masterizzi il file compresso tramite il software di masterizzazione per DOS passadogli i comandi adatti...

ummm se si potesse fare il tutto da una finestra dos su windows....sarebbe mitico !!!

infatti non vi ho detto che questa operazione(qui mi direte ma che vuole cussù ?!! :D) dovrebbe essere fatta DA UNA FINESTRA DOS e che funzioni sia con win 98 sia con XP........

toz
09-07-2002, 19:14
Mi sa che vi ho spaventato :D

cionci
09-07-2002, 19:26
Originariamente inviato da toz
[B]ummm se si potesse fare il tutto da una finestra dos su windows....sarebbe mitico !!!

infatti non vi ho detto che questa operazione(qui mi direte ma che vuole cussù ?!! :D) dovrebbe essere fatta DA UNA FINESTRA DOS e che funzioni sia con win 98 sia con XP........
Come ti ho detto io funziona su qualsiasi sistema operativo Windows...basta che ci siano il compressore e il software di masterizzazione... Io ti ho detto che il software di masterizzazione è per DOS, ma intendevo dire per linea di comando...ma funziona solo sotto Windows...

toz
09-07-2002, 20:28
Già mi hai aperto proprio nà bella strada.......wow....ho pensato questo : col mio bel file batch gli dico le cartelle che deve prendere,glile faccio zippare,e poi le " invio" al masterizzatore(sfuttando la funzione di win XP)....poi una volta in attesa di essere masterizzati,basta andare sulk masterizzatore e dirgli di scrivere il cd ...... bella idea no?

Solo il problema è che non sò come devo fare...... :D nel senso che , a quale exe devo fare riferimento per zippare le cartelle e a quale x "inviarle" al masterizzatore (o anche fargli masterizzare direttamente le cartelle zippate)????

Cmq già grazie mille ti devo nà bira.... :D

cionci
09-07-2002, 20:38
Ma a soluzione te l'ho già data...
Usa ad esempio WinRar come compressore...ha anche un tool per comprimere da linea di comando...
Poi usa Cdr-DAO...mi sembra che si chiami così...che un software di mesterizzazione per linea di comando...
Gli passi il file compresso con WinRAR...e glielo fai masterizzare...

toz
09-07-2002, 20:52
Già,hai perfettamente ragione.......mi procuro cdr-dao...e faccio un pò di prove.
Nel frattempo ho visto che l "imapi.exe" è il prg che masterizza in windows xp........qualcuno se se è possibile farlo partire da una riga di comando aggiungendo dei parametri per farlo formattare e/o scrivere?......perchè se ci fosse questa possibilità sarebbe ancora più semplice...sempre a patto di sgamare in che modo vengono gestiti i file in attesa di essere copiati......che dite finiscono,in una cartella temporanea o l' imapi li pesca direttamente dalle posizioni originali?....mo controllo.......

toz
09-07-2002, 20:55
azz,li pesca dalle posiz. originali.......

toz
09-07-2002, 21:26
Ho scaricato cdrdao(soloche il file zippato si chiama cygwin-1.1.8-2 )occupa 20mega!!!! :eek: il problema che non ho la + pallida idea di come farlo fungere : ho lanciato il setup ora ma per provarlo avrei bisogno di qualche riga comando...... qualcun'altro vuole nà bira ? :D

toz
09-07-2002, 21:36
Azz. ma se qualcuno non mi dà una mano con cdrdao è la fine.... sto leggendo delle guide,ma non è affatto semplice!!

toz
09-07-2002, 22:17
Cmq nel frattempo mi è venuta in mente una cosa : se io nel file batch faccio in modo "d'inviare" i file al masterizzatore e poi vado sul masterizzatore e gli dò "scrivi file su cd"??
Sarebbe la soluzione + semplice no?
Solo che il comando Xcopy non va bene,che altro comando posso usare????

toz
09-07-2002, 23:08
Originariamente inviato da lombardp
[B]

, io indagherei sul Windows Scripting Host (il linguaggio di script di Windows) con il quale richiamare le funzionalità di masterizzazione messe a disposizione dal Windows Media Player.

SAi dove posso trovare info....sto im pazzendo!!
Tra l'altro ho fatto una prova : (uso questo file batch xchè è l'unico che ho e,se non si fosse capito non ci capisco un tubo di righe comando e simili)

ECHO OFF
ECHO " "
ECHO " COPIA DEI DATI DI: "
ECHO " "
ECHO " LISTINI - "
ECHO " "
ECHO " Premere un tasto per iniziare o Ctrl+C per terminare "
ECHO " "
PAUSE
XCOPY D:\ghenesis\Listini\*.* C:\Documents and Settings\Berlusconi\Desktop\Backup

(dove d: è l'altra partizione)
ma non mi ha copiato niente!!!! , si avvia il batch e poi si chiude senza darmi nessunm messaggio!

IO MI SPAROOOOOOOOOOOOOOOOOOOOOOOOOO!

pitx
09-07-2002, 23:24
Ciao Toz;)

Hai due possibilità o un software di backup (freeware o a pagamanto) oppure provare con nero.
Nero al suo interno possiede nerocmd.exe, che ti permette di masterizzare da prompt di dos/linea di comando.

Ricco di voci e di opzioni, devo dirti che sinceramente nn l'ho mai usato:)

Tentar nn nuoce:D

toz
10-07-2002, 07:57
Sarebbe la soluzione di tutti i mali...solo che la vedo dura a trovare tutti comandi necessari.....

cionci
10-07-2002, 07:57
Originariamente inviato da pitx
[B]Nero al suo interno possiede nerocmd.exe, che ti permette di masterizzare da prompt di dos/linea di comando.

Senti senti...questo non lo sapevo...

cionci
10-07-2002, 08:02
Mi sa che quello che hai scaricato è la libreria cygwin ;) Probabilmente è necessaria per il programma, ma lì dentro non credo tu debba guardare niente...

cionci
10-07-2002, 08:18
Quello da scaricare è questo : http://belnet.dl.sourceforge.net/sourceforge/cdrdao/cdrdao-1.1.5.bin.x86.win32.zip

Il file da 20 mega che hai scaricato serve solo per compilare il sorgente...

cionci
10-07-2002, 08:20
Faccio qualche prova e ti dico come si usa...

cionci
10-07-2002, 09:20
cdrdao non fa al caso tuo...mi sembra che possa scrivere solamente da immagine (forse ISO)...

Comunque ci sono altre alternative...i software di packet writing...come InCD dela Ahead (la stessa casa di Nero)...che ti dovrebbe permettere anche di copiare direttamente i tuoi file sul CD (purtroppo il formato di scrittura non può essere letto direttamente se non è presente un software di packet writing)...
Oppure software di backup incrementale su CD-RW...come NTI Backup NOW!... www.ntiu.com

toz
10-07-2002, 12:22
Ho già provato NTI ma non fà al caso mio....è troppo complicato (serve a dei commercialisti!!)
Cmq mi sto leggendo un pò di guide sul Windows Scripting Host e potrebbe essere una soluzione.
Sapete se cè una guida di dove trovare i comandi per usare la masterizzazione di windows XP?

Tra l'altro ma su XP funzionano sicuro i file batch ?

cionci
10-07-2002, 12:31
Originariamente inviato da toz
[B]Ho già provato NTI ma non fà al caso mio....è troppo complicato (serve a dei commercialisti!!)
Complicato ? Una volta settato lo scheduler ti resta nella system tray e funziona da solo senza toccare niente !!!

/\/\@®¢Ø
10-07-2002, 14:17
E' vero, cdr-dao masterizza solo le immagini
Allora potresti provare con i cdrtools ( che sono quelli normalmente usati sotto windows )

Se non sbaglio c'e' un port per windows.
In tal caso con mkisofs potresti crearti l'immagine iso che poi puoi masterizzare con cdrecord oppure con un qualsiasi altro programma per masterizzare.
Se il piping di windows e' decente ( ma temo di no ) potresti pure masterizzare "on-the-fly". Stasera quando torno a casa faccio un paio di prove.

pitx
10-07-2002, 15:37
Originariamente inviato da cionci
[B]
Senti senti...questo non lo sapevo...

Eppure da qualche parte negli hd ho un batch ... che usavo anch'io x farmi il backup giornaliero dei dati...
Vedo di trovarlo:)

/\/\@®¢Ø
10-07-2002, 18:42
Originariamente inviato da /\/\@®¢Ø
[B]E' vero, cdr-dao masterizza solo le immagini
Allora potresti provare con i cdrtools ( che sono quelli normalmente usati sotto linux)

Se non sbaglio c'e' un port per windows.
In tal caso con mkisofs potresti crearti l'immagine iso che poi puoi masterizzare con cdrecord oppure con un qualsiasi altro programma per masterizzare.
Se il piping di windows e' decente ( ma temo di no ) potresti pure masterizzare "on-the-fly". Stasera quando torno a casa faccio un paio di prove.

ma porc... ho fatto quote invece che modifica, e non riesco pure a cancellarlo...
vabbe' avevo solo messo windows al posto di linux...