4

「変更日」=現在のシステム時刻になるように、ある場所から別の場所にコピーされるときに、ファイルとフォルダーの「変更日」プロパティを更新する必要があります。Windows 7 を搭載した PC を使用していますが、管理者権限がないため、カスタム ユーティリティをインストールできません。私の現在のbatファイルはXCOPYを使用しています:

xcopy "\\sharepoint\dept\gis\Abandoned_Wire\*.*" "\\corp.dom\fs4\g1\OUTPUT\GRIDPROD\PDF\Maps\Abandon Wire Maps" /c /s /r /y /i

私の Windows XP ボックスでは、UnxUtils の「touch」コマンドを使用していますが、Windows 7 にネイティブな同等のコマンドが見つかりません。ありがとうございます。

4

4 に答える 4

8

Windows でファイルを「タッチ」するための非常に単純な (難解ですが) 構文があります。(最終変更のタイムスタンプを更新)

ファイルが現在のディレクトリにある場合、必要なのは次のとおりです。

copy /b fileName+

ファイルが他のパスにある場合、これは機能します。

copy /b somePath\fileName+,, somePath\

ただし、コピーされたファイルにのみ触れたいと思うので、まだ多くのコーディングを行う必要があるようです。

以下はテストされていませんが、うまくいくと思います。性能は保証できません。このソリューションには、未使用のドライブ文字が 2 つ必要です。K: と L: が利用可能であると想定しています。

@echo off

:: map unused drive letters to your source and target paths
subst K: "\\sharepoint\dept\gis\Abandoned_Wire"
subst L: "\\corp.dom\fs4\g1\OUTPUT\GRIDPROD\PDF\Maps\Abandon Wire Maps"

:: replicate the folder hierarchy
xcopy K: L: /t

:: recursively copy and touch all files
for /r K: %%F in (*) do (
  xcopy "%%F" "L:%%~pnxF" /r /y
  copy /b "L:%%~pnxF"+,, "L:%%~pF"
)

:: release the temporary drive mappings
subst /d K:
subst /d L:
于 2013-03-04T23:35:51.717 に答える
5

powershellデフォルトでWindows 7にすでにインストールされていると思います。次の行をバッチ ファイルに追加して、Abandoned_Wire*.* という名前のすべてのファイルのタイムスタンプを更新する powershell コマンドを実行します。

powershell.exe -command "ls 'folder\Abandoned_Wire\*.*' | foreach-object { $_.LastWriteTime = Get-Date }"

その行が行っていることは単純です:

-command: 次のコマンドを実行してすぐに戻るように powershell に指示します

ls: 指定されたパスにあるすべての一致するファイルを一覧表示します

foreach-objectls:見つかった各ファイルに対して次のブロックを実行します

$_.LastWriteTime = Get-Date: ファイルごとに、 (今日の日付と時刻)LastWriteTimeによって返される値を設定します。Get-Date

于 2013-03-04T19:18:20.033 に答える
0

Robocopyはこれを実行できるはずです。 robocopyは、Vista 以降の Windows に含まれるネイティブ ツールです。

robocopy "\sharepoint\dept\gis\Abandoned_Wire" "\corp.dom\fs4\g1\OUTPUT\GRIDPROD\PDF\Maps\Abandon Wire Maps" /COPY:DA /S /IS

デフォルトでは、データ、属性、およびタイムスタンプrobocopyがコピーされますが、これはフラグで制御できます。DAT/COPY

robocopy /?すべてのオプションについては、を参照してください。

于 2013-03-04T21:48:36.070 に答える
-1
for /R %i in (\*.\*) do copy %i /B+ ,,/Y
于 2015-06-22T08:45:41.127 に答える