it-swarm.asia

Setara dengan Windows perintah 'sentuh' Linux?

Apa yang Anda gunakan ketika Anda ingin memperbarui bidang file yang dimodifikasi tanggal pada Windows?

  1. perintah dapat diakses melalui C++, .NET, C #, atau sesuatu yang asli dari Windows (Vista lebih disukai)
  2. alat/aplikasi lebih disukai gratis, dan jika mungkin juga open source

Sunting: sudah ada halaman untuk aplikasi sebagaimana ditunjukkan oleh CheapScotsman di sini .

Kalau ada yang tahu bagaimana saya bisa melakukan ini melalui C++, C #, WSH atau yang serupa, baik dan bagus, kalau tidak saya akan berpikir semuanya tertutup dalam pertanyaan terkait.

167
facepalmd

Jika Anda ingin menyentuh cap tanggal file menggunakan windows, gunakan perintah berikut di Prompt perintah:

copy /b filename.ext +,,

(di mana filename.ext adalah nama file Anda). +,, adalah bendera khusus untuk copy yang memberitahukannya secara sederhana memperbarui tanggal/waktu pada file :

* Mengubah waktu dan tanggal suatu file

Jika Anda ingin menetapkan waktu dan tanggal saat ini untuk file tanpa mengubah file, gunakan sintaks berikut:

copy /b Source+,,

Koma menunjukkan penghilangan parameter Tujuan.

Edit berdasarkan komentar oleh Lumi dan Justin: meletakkan ini dalam file batch, mis. touch.cmd

@COPY /B %1+,, %1

Ini berfungsi bahkan jika file tersebut tidak ada di direktori saat ini (diuji pada Windows 7).

349
Gish Domains

Saya telah menggunakan dan merekomendasikan unxutils yang merupakan port asli Win32 dari banyak utilitas Unix yang umum. Ada perintah touch di sana.

160
Greg Hewgill

Jika yang Anda inginkan adalah mengubah tanggal modifikasi terakhir file (yang merupakan kasus saya):

C:\> powershell  (ls your-file-name-here).LastWriteTime = Get-Date
95
ThiagoAlves
type nul >>file & copy file +,,
  • Menciptakan file jika tidak ada.
  • Hanya menyisakan konten file.
  • Cukup gunakan cmd bawaan.
  • Kedua akses terakhir dan penciptaan kali diperbarui.

PERBARUI

Gah! Ini tidak berfungsi pada file read-only, sedangkan touch tidak. Saya menyarankan:

: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

@ dash-tom-bang:

Berikut ini penjelasan Technet tentang '+' dan koma yang misterius:

copy/b Sumber + ,

Koma menunjukkan penghilangan parameter Tujuan.

Perintah salin mendukung penggabungan banyak file menjadi satu file tujuan. Karena tujuan kosong tidak dapat ditentukan menggunakan karakter spasi pada Prompt perintah, dua koma dapat digunakan untuk menunjukkan itu.

Dan ini adalah referensi perintah penyalinan Technet: http://technet.Microsoft.com/en-us/library/bb490886.aspx

32
Faredoon

Jika Anda ingin mengodekannya sendiri, .NET menawarkan File.SetLastAccessTime , File.SetCreationTime dan File.SetLastWriteTime metode.

23
Fredrik Mörk

di sini adalah versi rekursif menggunakan powershell ... ini akan mengubah waktu modifikasi terakhir untuk semua file dan subdirektori, dan file dalam subdirektori direktori ini

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

Proyek GnuWin32 memiliki port Windows versi Gnu dari utilitas baris perintah Unix.

Muncul sebagai sejumlah paket terpisah dan Anda dapat menginstal hanya perintah yang Anda butuhkan tanpa dependensi lain. Untuk touch Anda memerlukan paket CoreUtils .

15
Dave Webb

Saya mencoba ini untuk membuat file kosong di skrip batch saya. Anda bisa menggunakan ini:

ECHO text>file1.txt
15
pkm

cygwin hadir dengan touch. Saya tahu Anda menyebutkan bahwa Anda tidak ingin menginstal seluruh kerangka kerja, tetapi cygwin cukup ringan, dan dapat dipanggil dari jendela perintah dos tanpa seluruh baris perintah unix-like dihidupkan.

Anda juga dapat mengontrol alat apa yang harus diinstal, sehingga Anda cukup menginstal file touch.exe, dan meninggalkan kerangka kerja lainnya.

14
serg10

Berikut adalah regfile sederhana yang saya tulis tambahkan klik kanan "touch" di Windows Explorer . Mudah untuk membuat skrip juga, karena hanya memanggil:

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

Port win32 asli dari banyak perintah unix , termasuk sentuhan.

Saya telah menggunakannya sebelumnya dan berfungsi dengan baik - tidak ada instalasi, tidak ada DLL, dll

12
Adam Davis

Coba yang ini dari CodeProject .

  • Tidak perlu menginstal.
  • Jika mau, Anda bahkan dapat memodifikasi sumbernya.
11
Prakash

Anda juga dapat menginstal Cygwin yang memberi Anda Sentuh serta sejumlah besar perintah * NIX lainnya.

9
jamesaharvey

Dari pertanyaan serupa di Stack Overflow.

Untuk memperbarui cap waktu (mengabaikan fungsi lain touch), saya akan menggunakan:

copy /b filename.ext +,,
5

Ada banyak port Windows dari utilitas Unix. Lihat unxutils atau GnuWin32 proyek.

5
VladV

dari situs web:

Funduc Software Touch adalah utilitas 'sentuh' gratis yang memungkinkan Anda mengubah waktu/tanggal &/atau stempel atribut pada satu atau beberapa file. Selain itu, FS Sentuh dapat menambah/mengurangi jumlah detik yang ditentukan dari waktu file yang ada. Anda dapat menentukan file dan subdirektori yang akan diubah melalui 'topeng file kompleks'. Program dapat dijalankan dari interaktif atau baris perintah. Baru ke versi 7.2 adalah saklar baris perintah untuk mengubah cap waktu yang diubah file +/- jumlah detik yang ditentukan.

FS Touch berjalan pada Windows XP, Vista, Windows 7, & Windows 8.

4
Marek

Konten ini dapat disimpan ke file reg. Ini akan menambahkan menu konteks klik kanan untuk semua file dengan kemampuan "File Sentuh" ​​(diuji pada Windows 7). Salin semua baris berikut ke file reg. Jalankan file dan setujui pertanyaan. Klik kanan pada file apa saja (atau banyak file) - opsi "File Sentuh" ​​sekarang tersedia.

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

Jika Anda menggunakan git untuk satu atau lebih proyek, git-bash berbasis mingw untuk Windows memiliki perintah touch. Saya ingin mengucapkan terima kasih kepada @ greg-hewgill karena menunjukkan kepada saya bahwa 'nix utilities ada untuk windows, karena itu yang membuat saya mencoba untuk menyentuh git-bash.

3
Superole

di PowerShell coba:

ni fileName.txt

NI adalah alias dari cmdlet Item Baru .

3
Monfa.red

Saya menemukan cara cepat untuk melakukannya jika Anda telah menginstal vim (tidak bagus untuk file besar, akan membuka seluruh file kemudian menutupnya ...)

vim foobar.txt +wq!

"+" Menetapkan argumen untuk menjalankan perintah berikut. "wq!" adalah "tulis, berhenti, paksa". Ini akan membuka file, melakukan penyimpanan, lalu tutup segera sesudahnya.

2
Jason

Simpan yang berikut ini sebagai touch.bat di folder% windir%\system32 Anda atau tambahkan folder tempat ia disimpan ke variabel lingkungan PATH Anda:

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

Penggunaan sampel:

touch *.cpp
touch somefile.c

Referensi: Microsoft KB 69581

2
Tim Partridge

Saya ingin fitur 'touch' mengkloning/menggandakan tanggal file dari file lain, secara asli, dan dapat digunakan dari file batch.

Jadi 'drag and drop' file video ke file batch, FFMPEG berjalan, kemudian 'Date Created' dan 'Date Modified' dari file input akan disalin ke file output.

Ini tampak sederhana pada awalnya sampai Anda menemukan file batch mengerikan dalam menangani nama file unicode, PowerShell in-line mengacaukan dengan simbol nama file, dan melarikan diri dua kali adalah mimpi buruk.

Solusi saya adalah menjadikan bagian 'touch' sebagai skrip PowerShell terpisah yang saya sebut 'CLONE-FILE-DATE.ps1' dan berisi:

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

Maka di sini adalah contoh penggunaan dalam file batch 'CONVERT.BAT' saya:

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

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

Saya pikir PowerShell dapat dibaca, jadi hanya akan menjelaskan batch yang berbicara:

% ~ dp0 adalah direktori saat ini dari file batch.

% ~ 1 adalah path file yang jatuh ke batch tanpa tanda kutip.

CHCP 65001> nul mengatur karakter ke UTF-8 dan menelan output.

- ExecutionPolicy ByPass memungkinkan Anda untuk menjalankan PowerShell tanpa perlu mengubah kebijakan global, yang ada untuk mencegah orang yang secara tidak sengaja menjalankan skrip.

1
WhoIsRich

Mencoba

file fsutil membuat new.txt 0

1
Peter Hacke

Lima alternatif yang disebutkan di atas, ditambah tiga lagi yang tidak disebutkan di sini, dapat ditemukan di SuperUser: "Windows Recursive Touch Command"

1
JdeBP

Ini sedikit tidak terkait dengan pertanyaan awal, tetapi saya menemukan ini sangat berguna pada Windows karena GUI.

Saya menggunakan utilitas TouchPro yang menyediakan GUI (dibuat di Explorer Shell):

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

1
rustyx

Nah, jika Anda benar-benar ingin memiliki perintah touch tersedia, Anda dapat menempatkan ini dalam file batch bernama touch.bat dan menempelkannya di C:\Windows:

TYPE NUL >>%1

Cukup sederhana.

1
MD XF

Orang-orang Unix memperbaiki masalah umum memperbarui tanggal file dari file apa pun dengan perintah touch . Namun, untuk Windows, terkadang metode yang lebih sederhana mungkin untuk kasus khusus.

Saya perlu memperbarui timestamp dari pintasan aplikasi di Windows 8.1 untuk membuat perubahan pada warna latar belakang Tile Aplikasi terlihat, lihat pertanyaan SO ini . Daripada menerapkan salah satu alat pintar di atas, saya merasa lebih mudah untuk mengedit bidang komentar dari pintasan. Sebagian besar orang membiarkan ini kosong, tetapi tentu saja, komentar yang berguna dengan cepat dikandung. Dan jika ada komentar, menambah atau menghapus periode terakhir tidak akan membahayakan.

0
Roland

Saya menghargai ini adalah pertanyaan lama, saya baru saja menemukan sentuhan pada sistem Windows 10 saya. Saya mengunduh dan menginstal Git dari di sini (saya pikir) dan sepertinya sentuhan dan berbagai utilitas lain ada di folder bin.

0
0909EM

Karena saya memerlukan ini juga dan beberapa hal lain, saya telah membuat ekstensi Shell saya sendiri yang melakukan ini: AllSorts Saya juga bersumber terbuka ini di sini

0
Stijn Sanders