web-dev-qa-db-ja.com

バックアップを作成し、タイムスタンプ付きの名前を変更するバッチファイル

ファイルをアーカイブフォルダーにコピーするには、次のネットワークパスがあります。 File 1FolderからArchiveにコピーしますが、動作しないこれら2つの調整を追加したいと思います。

  1. File 1-1の名前をFile 1 - date + timeに変更します
  2. 実行すると、コピーコードを含むcmdボックスが表示されます。バックグラウンドで実行したり、進行状況を表示するロード画面を使用したりできますか?

私のコードでは、名前を日付に変更するために この例 に従いました。

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"
14
CustomX

これを試して:

ren "File 1-1" "File 1 - %date:/=-% %time::=-%"
26
Endoro

これがあなたがしたいことであるかどうかを確認してください:

@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"
20
foxidrive

Foxidriveの回答を変更して、フォルダー全体とそのすべてのコンテンツをコピーしました。このスクリプトは、フォルダーを作成し、その下のサブフォルダーを含む別のフォルダーのコンテンツをバックアップします。

これを1時間ごとにスケジュールされたタスクに入れる場合、元のフォルダーのコピーでドライブをすぐにいっぱいにしてしまう可能性があるため、注意する必要があります。 bitbucketなどの前は、コードをオフラインで保存するために同様のスクリプトとして使用していました。

@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 
7
KuriaNdungu

現在のシステム日付に基づいてすべての.pdfファイルの名前を変更します。たとえば、Gross Profit.pdfという名前のファイルはGross Profit 2014-07-31.pdfに名前が変更されます。明日実行すると、名前がGross Profit 2014-08-01.pdfに変更されます。

?をレポート名Gross Profitに置き換えることもできますが、名前を変更するのは1つのレポートのみです。 ?は、Conduitフォルダー内のすべての名前を変更します。 ?が非常に多い理由は、一部の.pdfが長い名前を持っているためです。 12個の?sを入力した場合、12文字より長い名前は13番目の文字で切り取られます。 1 ?で試してから、多くの?で試してください。 ?の長さは、もう少し長くするか、最長のレポート名と同じにする必要があります。

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

はい、バックグラウンドで実行するには、バッチファイルへのショートカットを作成し、プロパティに入ります。 LinuxマシンのATMを使用していますが、必要なオプションは[詳細設定]タブにあります。

次のようなvbsスクリプトを使用してバッチスクリプトを実行することもできます。

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

これにより、cmdウィンドウが表示されずにバッチファイルが実行されます。

0
krowe