Se eu entendi corretamente, você está com o objetivo de fazer backup de suas pastas recursivamente. Eu sugeriria usar o parâmetro / S . Digite help xcopy
para obter mais informações.
Eu tenho uma pasta chamada " C:\Jobs\job#1
", " C:\Jobs\job#2
" " C:\Jobs\job#3
" etc e muitos diretórios e subdiretórios sob ela.
Desejo obter todos os diretórios em Trabalhos e copiá-los para C:\backup
.
Então eu quero xcopy todos os arquivos em cada trabalho # 1, 2, 3 etc. para C:\backup\job#1\month\*.*
Para tornar mais claro.
Source dir = C:\Jobs\job#1\"myfiles&dir"
Destination dir = C:\Backup\job#1\month\"myfiles&dir"
faça a próxima pasta
Source dir = C:\Jobs\job#2\"myfiles&dir"
Destino dir = C: \ Backup \ job # 2 \ mês \ "myfiles & dir"
... até que todas as pastas estejam em backup. Como a pasta de trabalhos continua aumentando, ao fazer isso dessa maneira, não preciso adicionar código extra nesse script, exceto modificar o mês. Obrigado.
Se eu entendi corretamente, você está com o objetivo de fazer backup de suas pastas recursivamente. Eu sugeriria usar o parâmetro / S . Digite help xcopy
para obter mais informações.
Verifique se DATE / T em seu computador fornece este formato e com a parte numérica no formato MM / DD / AAAA Isso é um requisito para que as instruções 2 FOR funcionem. No meu computador, DATE / T fornece
C:\>DATE /T
Tue 11/15/2011
C:\>
Coloque uma referência ao arquivo em lote no agendador de tarefas. você poderia executá-lo uma vez por mês .. Para testar se o agendador de tarefas está rodando, sugiro mover o relógio do seu computador .. Eu li que o Agendador de Tarefas (possivelmente no XP) pode ser um pouco engraçado se ele executa arquivos em lote mas teste.
Execute isso no agendador de tarefas todos os meses.
Conteúdo do backup.bat por mês \ formato de trabalho
FOR /F "TOKENS=1,2,3,4 DELIMS=/ " %%A IN ('DATE /T') DO @set mm=%%B
FOR /F "TOKENS=1,2,3,4 DELIMS=/ " %%A IN ('DATE /T') DO @set yyyy=%%D
xcopy c:\jobs c:\bkup\%yyyy%_%mm% /e /I
Se você quiser no formato job \ month, como escreveu, em primeiro lugar, esteja ciente de que não deu espaço para colocar os arquivos de c: \ jobs que você copiava em cada subdiretório e seu conteúdo.
Você só deseja que esse lote seja executado uma vez por mês, portanto, coloque-o no agendador de tarefas.
Para qualquer uma dessas linhas xcopy que são executadas, se não houver nenhum arquivo ou subdiretório dentro do subdiretório especificado de jobs, nenhuma estrutura de diretórios será criada, mas isso não deve importar.
Como se c: \ jobs \ a não tivesse nenhum arquivo e não houvesse diretório nele. Em seguida, c: \ bkup \ a e c: \ bkup \ a \ yyyy_mm não serão criados. Qual deve estar bem. Outros trabalhos, por exemplo o trabalho no subdiretório b, se houver algum arquivo ou diretório nele e existiria se você tiver algum trabalho lá! criaria os diretórios no destino.
Isso pode ajudá-lo a entender parte do backup.bat que segue
C:\>for /f %f in ('dir c:\jobs /ad/b') do @echo xcopy c:\jobs\%f c:\bkup\%f\%yyyy%_
%mm% /e /I
xcopy c:\jobs\a c:\bkup\a11_11 /e /I
xcopy c:\jobs\b c:\bkup\b11_11 /e /I
xcopy c:\jobs\c c:\bkup\c11_11 /e /I
Conteúdo do backup.bat para backup no formato job \ month.
FOR /F "TOKENS=1,2,3,4 DELIMS=/ " %%A IN ('DATE /T') DO @set mm=%%B
FOR /F "TOKENS=1,2,3,4 DELIMS=/ " %%A IN ('DATE /T') DO @set yyyy=%%D
for /f %f in ('dir c:\jobs /ad/b') do xcopy c:\jobs\%f c:\bkup\%f\%yyyy%_
%mm% /e /I