Windows'ta bir dosyanın tarihini değiştiren alanını güncellemek istediğinizde ne kullanıyorsunuz?
Düzenleme: CheapScotsman tarafından gösterilen uygulamalar için zaten bir sayfa var here .
Kimse bunu C++, C #, WSH veya benzer, iyi ve iyi bir şeyle nasıl yapabileceğimi bilirse, başka her şeyin bağlantılı soruda ele alındığını düşünürdüm.
Pencereleri kullanarak bir dosyanın tarih damgasına dokunmak istiyorsanız, İstemi komutunda aşağıdaki komutu kullanın:
copy /b filename.ext +,,
(filename.ext
dosyanızın adıdır). +,,
, copy
öğesine basitçe - dosyadaki tarih/saati güncelle için özel bir bayraktır: -
* Bir dosyanın saatini ve tarihini değiştirme
Geçerli saati ve tarihi, dosyayı değiştirmeden bir dosyaya atamak istiyorsanız, aşağıdaki sözdizimini kullanın:
copy /b Source+,,
Virgüller, Hedef parametresinin atlandığını gösterir.
Lumi ve Justin'in yorumlarına göre düzenle: bunu bir toplu iş dosyasına koyar, örneğin. dokunma.cmd
@COPY /B %1+,, %1
Bu, dosya geçerli dizinde olmasa bile çalışır (Windows 7'de test edilmiştir).
Çok sayıda ortak Unix yardımcı programının yerel Win32 bağlantı noktaları olan unxutils kullandım ve önerdim. Orada bir touch
komutu var.
İstediğiniz tek şey dosyanın son değiştirilme tarihini değiştirmekse (ki bu benim durumum):
C:\> powershell (ls your-file-name-here).LastWriteTime = Get-Date
type nul >>file & copy file +,,
file
oluşturur.cmd
dahili kullanır.GÜNCELLEME
Gah! Bu, salt okunur dosyalar üzerinde çalışmaz, oysa touch
işlevi çalışır. Öneririm:
: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"
@ Çizgi-tom-patlama:
İşte Technet'in gizemli '+' ve virgüllerin açıklaması:
kopyala/b Kaynak + ,
Virgüller, Hedef parametresinin atlandığını gösterir.
Copy komutu, birden fazla dosyayı tek bir hedef dosyaya birleştirmeyi destekler. Boş bir hedef, Komut İsteminde bir boşluk karakteri kullanılarak belirtilemediğinden, bunu belirtmek için iki virgül kullanılabilir.
Ve bu Technet'in kopya komutu referansı: http://technet.Microsoft.com/en-us/library/bb490886.aspx
Kendiniz kodlamak istiyorsanız, .NET, File.SetLastAccessTime
, File.SetCreationTime
ve File.SetLastWriteTime
yöntemlerini sunar.
burada powershell kullanarak özyinelemeli bir sürüm ... bu, tüm dosya ve alt dizinlerin ve bu dizinin alt dizinlerindeki dosyaların son değiştirilme zamanını değiştirecek
ps c:myDir> Get-ChildItem . * -recurse | ForEach-Object{$_.LastWriteTime = get-date}
Bunu toplu komut dosyasımda boş bir dosya oluşturmak için denedim. Bunu kullanabilirsiniz:
ECHO text>file1.txt
cygwin
, touch
ile birlikte gelir. Bütün bir çerçeveyi kurmak istemediğinizi belirttiğinizi biliyorum, ancak cygwin oldukça hafiftir ve unix benzeri komut satırının tamamı açılmadan dos komut penceresinden çağrılabilir.
Hangi araçların yükleneceğini de denetleyebilirsiniz, böylece touch.exe
dosyasını yükleyebilir ve çerçevenin geri kalanını bırakabilirsiniz.
İşte yazdığım basit bir dosya Windows Gezgini'nde "dokun" u sağ tıklayın . Sadece çağırdığından beri senaryo yazması kolay olurdu:
cmd.exe /c copy %1+nul %1 /by
Dokunma dahil birçok unix komutunun yerel win32 bağlantı noktası .
Daha önce kullandım ve iyi çalışıyor - kurulum yok, DLL yok, vb.
Bunu CodeProject den deneyin.
Ayrıca Cygwin 'i de yükleyebilirsin, bu da sana Touch'ın yanı sıra diğer * NIX komutlarının bir çokluğunu da verir.
Bir benzer bir sorudan Yığın Taşması ile ilgili.
Zaman damgalarını güncellemek için (touch
işlevinin diğer işlevlerini yok sayarak), şöyle giderdim:
copy /b filename.ext +,,
web sitesinden:
Funduc Software Touch , bir veya daha fazla dosyadaki zaman/tarih ve/veya nitelik damgalarını değiştirmenize izin veren ücretsiz bir 'dokunma' yardımcı programıdır. Ayrıca, FS Dokunma mevcut dosya süresinden belirli bir saniye sayısını ekleyebilir/çıkarabilir. 'Karmaşık dosya maskeleri' ile hangi dosya (ların) ve/veya alt dizinlerin değiştirileceğini belirleyebilirsiniz. Program etkileşimli veya komut satırından çalıştırılabilir. 7.2 sürümünde yeni bir dosya değiştirme zaman damgasını +/- belirtilen saniye sayısını değiştirmek için bir komut satırı anahtarıdır.
FS Touch, Windows XP, Vista, Windows 7 ve Windows 8'de çalışır.
Bu içerik bir reg dosyasına kaydedilebilir. Bu, "Dokunmatik Dosya" özelliğine sahip tüm dosyalar için bir sağ tıklama bağlam menüsü ekler (Windows 7'de test edilmiştir). all aşağıdaki satırları reg dosyasına kopyalayın. Dosyayı çalıştırın ve soruyu onaylayın. Herhangi bir dosyaya (veya birden fazla dosyaya) sağ tıklayın - "Dosyaya Dokun" seçeneği artık kullanılabilir.
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\" +,,"
Kod bileşeni "Windows için Dokun" konusuna ne dersiniz: http://www.codeproject.com/KB/applications/touch_win.aspx
düzenle; Burada olduğu gibi aynı soru: https://stackoverflow.com/questions/51435/windows-version-of-the-unix-touch-command/51439
Git'i bir veya daha fazla proje için kullanıyorsanız, Windows için mingw tabanlı git-bash
touch
komutuna sahiptir. Greg-hewgill'e bana 'nix araçlarının pencereler için mevcut olduğunu, çünkü git-bash'ta dokunmayı denemek fikrini ortaya koyduğu için bana teşekkür etmek istiyorum.
Eğer vim yüklüyse bunu yapmak için hızlı bir yol buldum (büyük dosyalar için harika değil, tüm dosyayı açıp kapatın ...)
vim foobar.txt +wq!
"+", Aşağıdaki komutları çalıştırmak için argümanı ayarlar. "WQ!" "yazma, bırakma, zorlama" dır. Bu, dosyayı açacak, bir tasarruf yapacak ve ardından hemen sonra kapanacaktır.
Aşağıdakileri% windir%\system32 klasörünüze touch.bat olarak kaydedin veya PATH ortam değişkeninize kaydedildiği klasörü ekleyin:
@echo off
if %1.==. goto end
if not exist %1 goto end
copy /b %1 +,, > nul
echo %1 touched!
:end
Örnek kullanım:
touch *.cpp
touch somefile.c
Referans: Microsoft KB 69581
Dosya tarihlerini başka bir dosyadan yerel olarak klonlama/çoğaltma özelliğinin 'dokunma' özelliğini ve bir toplu iş dosyasından kullanılabilir olmasını istedim.
Böylece video dosyasını toplu dosyaya 'sürükle ve bırak', FFMPEG çalışır, sonra girdi dosyasından 'Oluşturma Tarihi' ve 'Tarih Değiştirme Tarihi' çıktı dosyasına kopyalanır.
Toplu iş dosyalarının unicode dosya adlarını kullanmada korkunç olduklarını, satır içi PowerShell'in dosya adı sembollerini bozduğunu ve bunlardan iki kez kaçan bir kabus olduğunu görünene kadar bu basit görünüyordu.
Benim çözümüm 'dokunma' kısmını 'CLONE-FILE-DATE.ps1' olarak adlandırdığım ayrı bir PowerShell betiği haline getirmekti ve içerdiği:
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
Öyleyse, 'CONVERT.BAT' toplu iş dosyasındaki örnek kullanım şöyle:
%~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'in okunabilir olduğunu düşünüyorum, bu yüzden sadece toplu konuşmayı açıklayacağım:
% ~ dp0 , toplu iş dosyasının geçerli dizinidir.
% ~ 1 , kümeye tırnak işaretleri olmadan bırakılan dosyanın yoludur.
CHCP 65001> nul karakterleri UTF-8 olarak ayarlar ve çıktıyı yutar.
-ExecutionPolicy ByPass , insanların yanlışlıkla komut dosyalarını çalıştırmalarını önlemek için var olan global politikayı değiştirmeye gerek kalmadan PowerShell'i çalıştırmanıza olanak tanır.
Deneyin
fsutil dosyası createnew new.txt 0
Yukarıda belirtilen beş alternatif ve burada belirtilmeyen üç tane daha SuperUser'da bulunabilir: "Windows Özyinelemeli Dokunmatik Komut"
Bu, asıl soru ile biraz ilişkili değil, ancak bunu GUI nedeniyle Windows'ta çok yararlı buluyorum.
BirGUI(Explorer Kabuğu içine oluşturur) sağlayan TouchPro yardımcı programını kullanıyorum:
Eh, eğer really eğer touch
komutunu kullanmak istiyorsanız, bunu touch.bat
adlı bir toplu iş dosyasına koyabilir ve C:\Windows
içine yapıştırabilirsiniz:
TYPE NUL >>%1
Yeterince basit.
Unix çalışanları, herhangi bir dosyanın dosya tarihini touch command ile güncelleme sorununu çözdü. Ancak, Windows için, bazen özel durumlar için daha basit bir yöntem mümkündür.
Uygulama Döşemesinin arka plan renginde değişiklik yapmak için Windows 8.1'deki bir uygulama kısayolunun zaman damgasını güncellemem gerekiyor, bkz. this SO question . Yukarıdaki akıllı araçlardan birini uygulamak yerine, kısayolun yorum alanını düzenlemeyi daha kolay buluyorum. Çoğu insan bunu boş bırakır, ancak elbette, yararlı bir yorum çabucak anlaşılır. Bir yorum varsa, son bir dönemin eklenmesi veya çıkarılması hiçbir zaman zarar vermez.
Bunun eski bir soru olduğunu takdir ediyorum, Windows 10 sistemime dokunduğumu yeni keşfettim. Git'i here (bence) 'dan yükleyip kurdum ve dokunuşa benziyorum ve diğer çeşitli yardımcı programlar bin klasöründe.