web-dev-qa-db-ja.com

WindowsのLinuxコマンド 'touch'に相当しますか。

Windowsでファイルの日付変更フィールドを更新したい場合はどうしますか?

  1. コマンド、C++、.NET、C#、またはWindows固有のもの(Vistaが推奨)を介してアクセス可能
  2. ツール/アプリケーション無料、できればオープンソースも

編集:CheapScotsman で指摘されているように、すでにアプリケーション用のページがあります

私がC++、C#、 WSH 、またはそれに似たものを使ってこれを行うことができる方法を誰かが知っていれば、他のすべてがカバーされると思うリンク先の質問に.

167
facepalmd

ウィンドウを使用してファイルの日付スタンプをタッチする場合は、コマンドプロンプトで次のコマンドを使用します。

copy /b filename.ext +,,

filename.extはあなたのファイルの名前です) +,,copyに対する特別なフラグで、ファイルの日付/時刻を単純に 更新するように指示します

*ファイルの日時を変更する

ファイルを変更せずに現在の日時をファイルに割り当てるには、次の構文を使用します。

copy /b Source+,,

コンマは、Destinationパラメーターの省略を示します。

LumiとJustinによるコメントに基づいて編集します。これをバッチファイルに入れます。 touch.cmd

@COPY /B %1+,, %1

ファイルが現在のディレクトリ(Windows 7でテスト済み)にない場合でもこれは機能します。

349
Gish Domains

私は unxutils を使用し、推奨しています。これは、多くの一般的なUnixユーティリティのネイティブWin32ポートです。そこにtouchコマンドがあります。

160
Greg Hewgill

必要なのがファイルの最終更新日を変更することだけです(これは私の場合でした)。

C:\> powershell  (ls your-file-name-here).LastWriteTime = Get-Date
95
ThiagoAlves
type nul >>file & copy file +,,
  • fileが存在しない場合は作成します。
  • ファイルの内容をそのままにします。
  • cmdビルトインを使うだけです。
  • 最終アクセスの作成の両方が更新されました。

UPDATE

ああ!これは読み取り専用ファイルでは機能しませんが、touchは機能します。私は提案します:

:touch
if not exist "%~1" type nul >>"%~1"& goto :eof
set _ATTRIBUTES=%~a1
if "%~a1"=="%_ATTRIBUTES:r=%" (copy "%~1"+,,) else attrib -r "%~1" & copy "%~1"+,, & attrib +r "%~1"
58
bobbogo

@ダッシュトムバン:

Technetが神秘的な「+」とコンマについて説明します。

コピー/ bコピー元+ ,

コンマは、Destinationパラメーターの省略を示します。

Copyコマンドは、複数のファイルを単一のコピー先ファイルにマージすることをサポートしています。コマンドプロンプトで空白文字を使用して空白文字を指定することはできないので、2つのカンマを使用してそれを示すことができます。

Technetのコピーコマンドリファレンスです。 http://technet.Microsoft.com/ja-jp/library/bb490886.aspx

32
Faredoon

自分でコーディングしたい場合は、 File.SetLastAccessTimeFile.SetCreationTime を.NETで提供しています。 )および File.SetLastWriteTime メソッド。

23
Fredrik Mörk

これはpowershellを使用した再帰的バージョンです。これはすべてのファイルとサブディレクトリ、およびこのディレクトリのサブディレクトリ内のファイルの最終更新時刻を変更します。

ps c:myDir> Get-ChildItem . * -recurse | ForEach-Object{$_.LastWriteTime = get-date}
21
roger

GnuWin32 プロジェクトには、GnuバージョンのUnixコマンドラインユーティリティのWindowsポートがあります。

それはいくつかの別々のパッケージとして来ます、そしてあなたは他の依存関係なしであなたが必要とするコマンドだけをインストールすることができます。 touchには CoreUtils パッケージが必要です。

15
Dave Webb

私はこれを私のバッチスクリプトに空のファイルを作成することを試みました。これを使うことができます:

ECHO text>file1.txt
15
pkm

cygwin にはtouchが付きます。私はあなたがあなたが全体のフレームワークをインストールしたくないと言ったことを知っています、しかしcygwinは非常に軽量で、全体のunixのようなコマンドラインをオンにしなくてもdosコマンドウィンドウから呼び出すことができます。

どのツールをインストールするかを制御することもできるので、touch.exeファイルをインストールして、残りのフレームワークをそのままにすることができます。

14
serg10

これは私が Windowsエクスプローラで右クリック "touch"を追加するために書いた簡単なregfileです 。スクリプトを呼び出すのは簡単です。

cmd.exe /c copy %1+nul %1 /by
14
Jon Galloway

多くのunixコマンドのネイティブwin32ポート 、touchを含む。

私は以前にそれを使ったことがあり、うまくいった - インストールもDLLもなしなど

12
Adam Davis

CodeProject からこれを試してください。

  • インストールする必要はありません。
  • 必要に応じて、ソースを修正することもできます。
11
Prakash

また、 Cygwin をインストールすることで、Touchだけでなく他の* NIXコマンドも多数使用できるようになります。

9
jamesaharvey

スタックオーバーフローに関する 同様の質問 から。

タイムスタンプを更新するには(touchの他の機能を無視します)、次のようにします。

copy /b filename.ext +,,
5

多くのUnixユーティリティのWindowsポートがあります。 unxutils または GnuWin32 プロジェクトを見てください。

5
VladV

webサイトから:

Funduc So​​ftware Touch は、1つ以上のファイルの日付/時刻や属性スタンプを変更できる無料の「touch」ユーティリティです。さらに、FS Touchでは、既存のファイル時間から指定した秒数を増減できます。どのファイルやサブディレクトリを変更するかは 'complex file masks'で指定できます。プログラムは対話式またはコマンドラインから実行できます。バージョン7.2で新しく追加されたのは、ファイル修正タイムスタンプを+/-指定された秒数に変更するためのコマンドラインスイッチです。

FS Touchは、Windows XP、Vista、Windows 7、およびWindows 8で動作します。

4
Marek

このコンテンツはregファイルに保存することができます。これにより、 "Touch File"機能を持つすべてのファイルの右クリックコンテキストメニューが追加されます(Windows 7でテスト済み)。以下の行をregファイルにコピーallしてください。ファイルを実行して質問を承認します。任意のファイル(または複数のファイル)を右クリック - "Touch File"オプションが利用可能になりました。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\Shell]

[HKEY_CLASSES_ROOT\*\Shell\Touch File]

[HKEY_CLASSES_ROOT\*\Shell\Touch File\command]
@="cmd /C copy /b \"%1\" +,,"
4
SharonBL
4
CheapScotsman

1つ以上のプロジェクトにgitを使用している場合は、mingwベースのWindows用git-bashtouchコマンドがあります。 Windows用の 'nixユーティリティがあることを私に指摘してくれた@ greg-hewgillに感謝したい。それは、git-bashで触ってみることを考えさせられたからである。

3
Superole

powerShellで試してみてください。

ni fileName.txt

NIは、 New-Item コマンドレットのエイリアスです。

3
Monfa.red

私はあなたがvimをインストールしているならそれをする簡単な方法を見つけました(大きなファイルには不向きです、ファイル全体を開いてそれを閉じるでしょう...)

vim foobar.txt +wq!

"+"は以下のコマンドを実行するための引数を設定します。 "wq!" 「書き込み、終了、強制」です。これでファイルが開き、保存が行われ、その後すぐに閉じられます。

2
Jason

以下をtouch.batとして%windir%\ system32フォルダに保存するか、またはPATH環境変数に保存されているフォルダを追加します。

@echo off
if %1.==. goto end
if not exist %1 goto end
copy /b %1 +,, > nul
echo %1 touched!
:end

使用例

touch *.cpp
touch somefile.c

参照: Microsoft KB 69581

2
Tim Partridge

私はネイティブで、そして他のファイルからファイルの日付をクローン化/複製する「タッチ」機能が欲しいと思いました。

そのため、ビデオファイルをバッチファイルに「ドラッグアンドドロップ」してFFMPEGを実行し、入力ファイルの「作成日」と「変更日」を出力ファイルにコピーします。

バッチファイルがUnicodeファイル名を処理するのにひどい、インラインのPowerShellがファイル名のシンボルでめちゃくちゃになる、そしてそれらを二重にエスケープすることが悪夢になるまで、これは最初は簡単そうに見えました。

私の解決策は、 'touch'部分を 'CLONE-FILE-DATE.ps1'と呼んだ別のPowerShellスクリプトにすることでした。

param
(
  [Parameter(Mandatory=$true)][string]$SourcePath,
  [Parameter(Mandatory=$true)][string]$TargetPath
)

(GI -LiteralPath $TargetPath).CreationTime  = (GI -LiteralPath $SourcePath).CreationTime
(GI -LiteralPath $TargetPath).LastWriteTime = (GI -LiteralPath $SourcePath).LastWriteTime

それからこれが私の 'CONVERT.BAT'バッチファイル内での使用例です:

%~dp0\ffmpeg -i "%~1" ACTION "%~1-output.mp4"

CHCP 65001 > nul && PowerShell -ExecutionPolicy ByPass -File "%~dp0\CLONE-FILE-DATE.PS1" "%~1" "%~1-output.mp4"

私はPowerShellが読みやすいと思うので、バッチについて説明します。

%〜dp0は、バッチファイルの現在のディレクトリです。

%〜1は、引用符なしでバッチにドロップされたファイルのパスです。

CHCP 65001> nulは文字をUTF-8に設定し、出力を飲み込みます。

- ExecutionPolicy ByPassを使用すると、グローバルポリシーを変更することなくPowerShellを実行できます。これは、ユーザーが誤ってスクリプトを実行するのを防ぐためです。

1
WhoIsRich

やってみる

fsutilファイルcreatenew new.txt 0

1
Peter Hacke

上記の5つの選択肢に加えて、ここでは触れていない3つの選択肢がSuperUserにあります。 "Windows Recursive Touch Command"

1
JdeBP

これは元の質問とは少し関係がありませんが、GUIを使用するため、Windowsでは非常に便利です。

私はGUI(Explorer Shellに組み込まれています)を提供するTouchProユーティリティを使用しています。

http://www.jddesign.co.uk/products/touchpro/touchpro.htm

1
rustyx

touchコマンドを利用可能にしたい場合は、reallyにして、これをtouch.batというバッチファイルに入れてC:\Windowsに貼り付けることができます。

TYPE NUL >>%1

とても簡単です。

1
MD XF

Unixの人々は、touchコマンドでファイルのファイル日付を更新するという一般的な問題を修正しました。しかし、Windowsでは、特別な場合にはもっと簡単な方法が可能です。

表示されているアプリケーションタイルの背景色を変更するには、Windows 8.1でアプリケーションショートカットのタイムスタンプを更新する必要があります。 this SO question を参照してください。上記の巧妙なツールの1つを実装するよりも、ショートカットのコメントフィールドを編集する方が簡単だと思います。ほとんどの人はこれを空のままにしていますが、もちろん、有用なコメントがすぐに想像されます。また、コメントがある場合は、最後の期間を追加または削除しても悪影響はありません。

0
Roland

私はこれが古い質問であることを理解しています、私はちょうど私のWindows 10システムで接触を発見しました。ここから からGitをダウンロードしてインストールしました (これはtouchと他のさまざまなユーティリティがbinフォルダに入っているようです)。

0
0909EM

私もこれと他の多くのものが必要なので、私はこれを行う私自身のシェル拡張を作成しました: AllSorts 私はまたオープンソースですこれ はこちら

0
Stijn Sanders