2013-08-01 3 views
11

У меня есть следующий сетевой путь для копирования файла в папку архива. Он копирует File 1 от Folder до Archive, но я хотел бы добавить эти 2 корректировки, которые не будут работать.Batchfile для создания резервной копии и переименования с отметкой времени

  1. Rename File 1-1 в File 1 - date + time
  2. Запуск теперь отображает окно CMD с кодом копирования, можно запустить его в фоновом режиме или иметь экран загрузки, чтобы показать прогресс?

Для моего кода я следовал this example, чтобы изменить имя на дату.

copy "F:\Folder\File 1.xlsx" "F:\Folder\Archive\File 1-1.xlsx" 
/f "tokens=1-5 delim s=/ " %%d in ("%date%") do rename "F:\Folder example 2.xlsx" "F:\Folder\File example %%e-%%f-%%g.xlsx" 

ответ

0

Да, чтобы заставить его работать в фоновом режиме, создайте ярлык для командного файла и перейдите в свойства. Я нахожусь в банкомате Linux, но считаю, что желаемый вариант находится на вкладке «Дополнительно».

Вы также можете запустить пакетный скрипт через VBS скрипт, как это:

'HideBat.vbs 
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True 

Это будет выполнять пакетный файл, не CMD окно, как показано.

15

Смотрите, если это то, что вы хотите сделать:

@echo off 
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a 
set YYYY=%dt:~0,4% 
set MM=%dt:~4,2% 
set DD=%dt:~6,2% 
set HH=%dt:~8,2% 
set Min=%dt:~10,2% 
set Sec=%dt:~12,2% 

set stamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec% 

copy "F:\Folder\File 1.xlsx" "F:\Folder\Archive\File 1 - %stamp%.xlsx" 
+0

4,5 года спустя, и мне было необходимо:) .... Спасибо человеку –

24

попробовать это:

ren "File 1-1" "File 1 - %date:/=-% %time::=-%" 
+0

Нужна ли вам дополнительная документация, или достаточно ли использовать только это? – CustomX

+1

Ой, победа так сильно. Это самый элегантный простой способ сделать это с использованием переменных среды Windows, таких как '% DATE%' и '% TIME%'.Благодаря! Потрясающие. – Slink

+0

Но остерегайтесь других форматов даты и времени. – dummzeuch

6

Я изменил ответ Foxidrive, чтобы скопировать все папки и все их содержимое. этот скрипт создаст папку и сохранит содержимое другой папки, включая подпапки под ней.

Если вы указали это почасовой задаче, вам нужно быть осторожным, так как вы можете быстро заполнить свой диск копиями исходной папки. Перед битбакетом и т. Д. Я использовал как похожий скрипт для сохранения моего кода в автономном режиме.

@echo off 
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a 
set YYYY=%dt:~0,4% 
set MM=%dt:~4,2% 
set DD=%dt:~6,2% 
set HH=%dt:~8,2% 
set Min=%dt:~10,2% 
set Sec=%dt:~12,2% 

set stamp=YourPrefixHere_%YYYY%%MM%%DD%@%HH%%Min% 
rem you could for example want to create a folder in Gdrive and save backup there 
cd C:\YourGoogleDriveFolder 
mkdir %stamp% 
cd %stamp% 

xcopy C:\FolderWithDataToBackup\*.* /s 
1

переименовывает все .pdf файлов на основе текущей системной даты. Например, файл с именем Gross Profit.pdf переименован в Gross Profit 2014-07-31.pdf. Если вы запустите его завтра, он переименует его на Gross Profit 2014-08-01.pdf.

Вы можете заменить ? на имя отчета Gross Profit, но он будет только переименовывать один отчет. ? переименовывает все в папке Conduit. Причина в том, что существует так много ?, что некоторые .pdf имеют длинные имена. Если вы просто положили 12 ? s, тогда любое имя длиной более 12 символов будет обрезано на 13-м символе. Попробуйте с 1 ?, затем попробуйте его со многими ? s. Длина ? должна быть немного длиннее или дольше, чем самое длинное имя отчета.

@ECHO OFF 
SET NETWORKSOURCE=\\flcorpfile\shared\"SHORE Reports"\2014\Conduit 
REN %NETWORKSOURCE%\*.pdf "????????????????????????????????????????????????? %date:~-4,4%-%date:~-10,2%-%date:~7,2%.pdf"