Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    script batch per copiare file

    ciao a tutti,
    devo scrivere un batch che copia i files da una cartella all'altra. Non conoscendo il linguaggio MSDOS, volevo chiedervi qualche suggerimento. In particolare, vorrei eseguire un comando di questo genere

    XCOPY E:\BACKUP\DB.DMP \\[REMOTE SERVER]E$\BACKUP\CONC\DB%DataOra%.DMP /E /Y /I

    dove %DataOra% deve essere una stringa del tipo ggmmaaaahhmmss.
    Provando a lanciare lo script ho avuto i seguenti errori

    lanciando questo comando da DOS, il sistema risponde: "Cannot perform a cyclic copy". Eliminando l'opzione /E, il comando funziona, ma devo specificare il target (file o directory)

    scrivendo
    SET DATAORA=%DATE%%TIME%, il comando (senza l'opzione /E) funziona, ma mi crea una serie di sottocartelle; questo problema credo sia dovuto alla presenza degli slash "/" sulle date. Come posso formattare la stringa nel formato che mi serve?
    grazie per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Prova con

    SET DATAORA=%date:~6,4%%date:~3,2%%date:~0,2%%time:~0, 2%%time:~3,2%%time:~6,2%%time:~9,2%

    Lo switch /E serve a copiare directory e sottodirectory, ma tu stai copiando un file ... a cosa ti serve?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Originariamente inviato da oregon
    Prova con

    SET DATAORA=%date:~6,4%%date:~3,2%%date:~0,2%%time:~0, 2%%time:~3,2%%time:~6,2%%time:~9,2%

    Lo switch /E serve a copiare directory e sottodirectory, ma tu stai copiando un file ... a cosa ti serve?
    ciao,
    il dataora funziona, grazie.
    L'opzione /E l'ho copiata da uno script di esempio. Pensavo servisse per saltare il prompt che ti chiede di specificare il formato (file o directory).
    Credo ci siano problemi di diritti sulla macchina. Ho provato lo stesso comando da due server diversi, puntando allo stesso server di destinazione. In uno il comando funziona con l'opzione /E, ma solo se la cartella di destinazione è in locale. Se invece provo a copiare sul server remoto, mi chiede di specificare un nome di file o directory.
    Provando lo stesso comando da un'altra macchina, la copia verso il server remoto non funziona. O meglio; il file viene copiato, ma quando esco dal batch, sparisce.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Forse non mi sono spiegato ... il /E non devi proprio usarlo per la copia di un file.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Originariamente inviato da oregon
    Forse non mi sono spiegato ... il /E non devi proprio usarlo per la copia di un file.
    ti sei spiegato bene
    ho sostituito XCOPY con COPY (con opzioni /Y /B). Le copie vengono fatte, ma lo script non si chiude. Ho messo il comando EXIT ma non funziona. Come faccio a catturare gli errori e stamparli in un file di log?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Mostra lo script ...

    Non pensare di poter chiedere tanto ad uno script batch ... non è un vero e proprio linguaggio di programmazione ...

    Se ti serve molto altro, passa ad un vero linguaggio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Originariamente inviato da oregon
    Mostra lo script ...

    Non pensare di poter chiedere tanto ad uno script batch ... non è un vero e proprio linguaggio di programmazione ...

    Se ti serve molto altro, passa ad un vero linguaggio ...
    ecco lo script
    codice:
    ECHO OFF
     SET DATA=%DATE%
     SET ORA=%TIME%
     SET DataOra=%DATA:~4,2%%DATA:~7,2%%DATA:~10,4%%ORA:~0,2%%ORA:~3,2%
     SET FILELOG=log_%DATA:~4,2%%DATA:~7,2%%DATA:~10,4%.log
     SET SCHEMA1_FROM= E:\BACKUP\SCHEMA1\SCHEMA1.DMP
     SET SCHEMA1_LOC_DEST= E:\BACKUP\SCHEMA1\OLD\SCHEMA1_%DATAORA%.DMP
     SET SCHEMA1_REM_DEST= G:\SCHEMA1\SCHEMA1_%DATAORA%.DMP
    
     SET SCHEMA2_FROM= E:\BACKUP\SCHEMA2\SCHEMA2.DMP
     SET SCHEMA2_LOC_DEST= E:\BACKUP\SCHEMA2\OLD\SCHEMA2_%DATAORA%.DMP
     SET SCHEMA2_REM_DEST= G:\SCHEMA2\SCHEMA2_%DATAORA%.DMP
    
     SET SCHEMA3_FROM= E:\BACKUP\SCHEMA3\SCHEMA3.DMP
     SET SCHEMA3_LOC_DEST= E:\BACKUP\SCHEMA3\OLD\SCHEMA3_%DATAORA%.DMP
     SET SCHEMA3_REM_DEST= G:\SCHEMA3\SCHEMA3_%DATAORA%.DMP
    
    REM BACKUP SCHEMA1
    ECHO BACKUP SCHEMA 1 >> %FILELOG% 2>&1
    COPY %SCHEMA1_FROM% %SCHEMA1_LOC_DEST% /B /Y >> %FILELOG% 2>&1
    
    REM BACKUP SCHEMA2
    ECHO BACKUP SCHEMA 2 >> %FILELOG% 2>&1
    COPY %SCHEMA2_FROM% %SCHEMA2_LOC_DEST% /B /Y >> %FILELOG% 2>&1
    
    REM BACKUP SCHEMA3
    ECHO BACKUP SCHEMA 3 >> %FILELOG% 2>&1
    COPY %SCHEMA3_FROM% %SCHEMA3_LOC_DEST% /B /Y >> %FILELOG% 2>&1
    
    REM BACKUP SCHEMA1 SU SERVER REMOTO
    ECHO BACKUP SCHEMA1 SU REMOTO >> %FILELOG% 2>&1
    COPY %SCHEMA1_FROM% %SCHEMA1_REM_DEST% /B /Y  >> %FILELOG% 2>&1
    
    REM BACKUP SCHEMA2 SU SERVER REMOTO
    ECHO BACKUP SCHEMA2 SU REMOTO >> %FILELOG% 2>&1
    COPY %SCHEMA2_FROM% %SCHEMA2_REM_DEST% /B /Y  >> %FILELOG% 2>&1
    
    REM BACKUP SCHEMA3 SU SERVER REMOTO
    ECHO BACKUP SCHEMA3 SU REMOTO >> %FILELOG% 2>&1
    COPY %SCHEMA3_FROM% %SCHEMA3_REM_DEST% /B /Y  >> %FILELOG% 2>&1
    
    EXIT
    La cartella G: è un'unità di rete collegata al server remoto.
    la copia sulle cartelle locali (da SCHEMA_FROM a SCHEMA_LOC_DEST) funziona.
    Quando faccio le copie verso server remoto (da SCHEMA_FROM a SCHEMA_REM_DEST), la prima funziona; la seconda anche, ma blocca lo script.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.