Windows'a 'touch' eşdeğeri (örn. İndex.html oluşturmanın node.js yolu)


196

Windows makinesinde bu hatayı alıyorum

'dokunma' dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor.

yapmak için talimatları takip ettiğimde :

touch index.html app.js style.css

'Dokunmatik' kullanmaya eşdeğer bir pencere var mı? Bu tür bir komutu uygulamak için bu dosyaları el ile oluşturmam (ve zaman damgasını değiştirmek için değiştirmem) gerekir mi? Bu pek ... düğüm gibi görünmüyor ...


5
Bir basit bir Google arama pencereleri uygulamalarının şovlarının sürü touch. Burada diğer tartışmalar: superuser.com/questions/10426/… ve Cygwin kütüphanesi , Windows'ta Unix komutlarının ortak bir araç takımıdır.
jfriend00



1
PowerShell'i kullanırken buraya geldiyseniz lütfen Raghuveer'in cevabına doğrudan atlayın .
RBT

Yanıtlar:


279

cmd pencere tipinde:

type nul > your_file.txt

Bu, dosya_tipi dosyanızda 0 bayt oluşturur.

Bunu yapmanın başka bir yolu da echo komutunu kullanmaktır:

echo.> your_file.txt

Eko. - içinde boş bir satır bulunan bir dosya oluşturur.

2019-04-01 tarihinde düzenlendi:

Dosyanın içeriğini korumanız gerekiyorsa> yerine >> kullanın.

>   Creates a new file
>>  Preserves content of the file

Misal

type nul >> your_file.txt

2020-04-07 tarihinde düzenlendi

Ayrıca çağrı komutunu da kullanabilirsiniz .

Üst parti programını durdurmadan bir parti programını diğerinden çağırır. Call komutu etiketleri aramanın hedefi olarak kabul eder.

Misal:

call >> your_file.txt

2
Windows 7'de ilk seçenek korkunç bir iletişim kutusu oluşturur ve ardından access deniedkonsolda görürsünüz . İkinci seçenek gayet iyi çalışıyor!
Dekoder

13
Yanıt yanlış, yalnızca dosya olmadığında çalışır. Dosya varsa, >>ilkini kullanmak hiçbir şey yapmaz, ikincisi dosyanın sonuna bir satır ekler. Doğru cevap superuser.com/questions/10426/…
stenci

3
@stenci - Varolmayan bir dosyada denedim ve gayet iyi çalıştı. Tamam dosyasını yarattı. Belki yönetici haklarınız yok?
dcp

2
@stenci süper kullanıcı linki harika. Cevap olarak göndermelisiniz.
Denise Skidmore

@DeniseSkidmore Teşekkürler, cevabı ekledim. Derinlerde ve insanlar bu cevaba yönelik yorumumu cevabımdan daha fazla okuyacaklar, ama şimdi orada.
stenci

67

Windows yerel olarak bir touchkomut içermez .

Mevcut herkese açık sürümlerden herhangi birini veya kendi sürümünüzü kullanabilirsiniz. Bu kodu olarak kaydedin touch.cmdve yolunuzda bir yere yerleştirin

@echo off
    setlocal enableextensions disabledelayedexpansion

    (for %%a in (%*) do if exist "%%~a" (
        pushd "%%~dpa" && ( copy /b "%%~nxa"+,, & popd )
    ) else (
        type nul > "%%~fa"
    )) >nul 2>&1

Bağımsız değişken listesini yineleyecektir ve varsa her öğe için dosya zaman damgasını güncelleyin, aksi takdirde oluşturun.


bu en iyisi, tam olarak beklendiği gibi çalışıyor ... buradaki diğer çözümler işe yarıyor ama uyarı / hata metinleri bırakıyor, IDK bana özelse.
Shakil

35

Bu komutu kullanabilirsiniz: ECHO >> dosyaadı.txt

geçerli klasörde belirtilen uzantıya sahip bir dosya oluşturur.

GÜNCELLEME:

boş dosya kullanımı için: kopya NUL dosyaadı.txt


8
Daha da iyisi type NUL > filename(0 bayt dosyası oluşturur)
krzemian

24
Dokunma gibi, bu dosyanın üzerine type NUL >> filename
yazmaz

3
Bu "ECHO açık" eklemek için harika bir yoldur. dosyasına ekleyin.
ripvlan

4
bu, varolan dosyaların zaman damgasını güncellemez.
Denise Skidmore

1
Bence Denise Skidmore OP'ye değil, henona cevap veriyor. (
Keith Russell


15

Burada kaç cevabın yanlış olduğunu görünce şaşırdım . Bir dosyaya hiçbir şey yazmamak dosyayı benzer bir şeyle doldurur ve bir dosyaya ECHO is ONyankı koymaya çalışmak $nulkelimenin tam anlamıyla $nuldosyaya yerleştirilir. Ayrıca PowerShell için, $nullbir dosyaya yankılama 0kb dosyası yapmaz, ancak UCS-2 LE BOMdosyalarınızın bayt sırası işareti olmadığından emin olmanız gerekirse dağınık hale gelebilecek şekilde kodlanır .

Burada tüm cevapları test ettikten ve benzer cevaplara referans verdikten sonra, bunların konsol kabuğu başına çalışacağını garanti edebilirim. FileName.FileExtensionİstediğiniz dosyanın tam veya göreli yolunu değiştirmeniz yeterlidir touch; sayesinde Keith Russell için COPY NUL FILE.EXTgüncelleme:

Zaman Damgası Güncellemeli CMD

copy NUL FileName.FileExtension

Bu FileName.FileExtension, 0 bayt boyutunda değil, yerleştirdiğiniz adla yeni bir dosya oluşturur . Dosya zaten varsa, zaman damgasını güncellemek için temel olarak kendini yerinde kopyalar. Bunun 1: 1 işlevselliğinden daha fazla geçici bir çözüm olduğunu söyleyebilirim, touchancak CMD için bir dosyanın zaman damgasını diğer içeriğini değiştirmeden güncellemeyi başarabilen yerleşik bir araç bilmiyorum.

CMD Zaman Damgası Güncellemesiz

if not exist FileName.FileExtension copy NUL FileName.FileExtension

Zaman Damgası Güncellemelerine Sahip Powershell

if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName.FileExtension ).LastWriteTime = Get-Date}

Evet, konsolda bir astar olarak çalışacaktır; PowerShell komut dosyasına yerleştirmeye gerek yoktur.

Zaman Damgası Güncellemeleri olmadan PowerShell

if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}


1
Dosyanın bulunduğu ve değişiklik zaman damgasını geçerli saate güncellemek istediğiniz durum ne olacak? Bu örneklerin bunu nasıl başardığını göremiyorum.
RoG

2
Harika gözlem, RoG! Bu sorunun cevabını güncelledim :)
kayleeFrye_onDeck

Bu en iyi cevap. Ancak, ben yine de değiştirerek onu geliştirmek istiyorum fsutil file CreateNew FileName.FileExtension 0tarafından copy NUL Filename.FileExtensionikincisi kısadır ve aynı şeyi yapar, çünkü.
Keith Russell

@KeithRussell IIRC kullanmadığım özel bir sebep copyvardı fsutilama bir süredir ... fsutilhaha hakkında böyle öğrendiğime eminim ! Nedenini anlamaya çalışacağım ...
kayleeFrye_onDeck

1
Aynı şekilde davransalar bile, sanırım hız testi yapmadan birinin daha iyi olduğunu söylemek benim için erken.
Keith Russell

14

Komut satırınızda aşağıdaki komutu kullanın:

fsutil file createnew filename  requiredSize

Aşağıdaki gibi parametre bilgileri:

fsutil - Dosya sistemi yardımcı programı (çalıştırdığınız yürütülebilir dosya)

dosya - bir dosya eylemini tetikler

createnew - gerçekleştirilecek eylem (yeni bir dosya oluşturun)

dosyaadı - kelimenin tam anlamıyla dosyanın adı olurdu

requiredSize - oluşturulan dosyadaki bayt cinsinden bir dosya boyutu ayırır


2
Bunun iyi bir cevap olarak kabul edilmesi için biraz açıklama yapılması gerekmektedir. Bu beş kelimenin ne anlama geldiği belli değil.
jfriend00

1
benim için çalıştı ... requiredSize şey garip ... komut sadece yeni dosya binlerce NULLs ile doldurur ... garip ... yani sadece 0 kullanın ... requiredSize atlarsanız bir hata oluşturur .. .
dsdsdsdsd

1
Bu iletişimin yönetici ayrıcalıklarına ihtiyacı var :(
ADJ

1
touch ayrıca yeni dosyalar oluşturmakla kalmaz, mevcut dosyalardaki zaman damgasını da günceller.
Denise Skidmore

1
dokunma bunu yapmanın hızlı bir yoludur, ona en yakın yankı veya tip olacaktır, sanırım, bu komut dosyası oluşturmak için çok kullanışlı bir araçtır ve WS16'da yaygın olarak kullanılır, yaşasın! docs.microsoft.com/en-us/windows-server/administration/…
Alan

10

Windows Power Shell'de aşağıdaki komutu kullanabilirsiniz:

New-Item <filename.extension>

veya

New-Item <filename.extension> -type file

Not: Yeni-Öğe onun takma ile değiştirilebilir ni


1
Bu, PowerShell'in varsayılan komut kabuğu programı olduğu günümüz Windows dünyasında gerçek cevaptır.
RBT

Hangi Windows'dan bahsettiğinizden emin değilim, yeni bir Windows 10 yükledim ve Powershell kesinlikle varsayılan kabuk değil. 'New-Item' is not recognized as an internal or external command
user5359531

8

Dokunma işlevini aşağıdaki komutla çoğaltabilirsiniz:

$>>filename

Bunun yaptığı, denilen bir programı yürütme girişimidir $, ancak $yoksa (veya çıktı üreten bir yürütülebilir dosya değilse), o zaman hiçbir çıktı üretilmez. Bu aslında bir işlev hack, ancak aşağıdaki hata iletisini alırsınız:

'$' dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor.

Hata mesajını istemiyorsanız iki şeyden birini yapabilirsiniz:

type nul >> filename

Veya:

$>>filename 2>nul

typeKomut çalışır okurken başka bir şey döner EOF (end of file) yapar nul, içeriğini görüntülemek için.

2>nulnul'a hata çıkışı (çıkış 2) gönderir (bu, yazıldığında tüm girdileri yok sayar). Açıkçası ikinci komut (ile 2>nul), typekomut tarafından yazılması daha hızlı olduğundan gereksiz hale getirilir . Ama en azından şimdi seçenek ve bilgiye sahipsiniz.


Bu harika, ama %ERRORLEVEL%her zaman sıfıra ayarlanmıyor. Bir noop ekleyerek bu sorunu düzeltebilirsiniz || cd., ancak bu her zaman hatayı 0 olarak ayarlar; bu, "dokunma" başarısız olursa istediğiniz şey olmayabilir.
Keith Russell

5

Windows Powershell terminalindeki Unix / Mac OS X'in 'dokunma' komutunu taklit etmek için ne komut ne typede echo- gerekli değildir . Aşağıdaki kısayolu kullanın:

$null > filename

Bu, geçerli konumunuzda 'dosyaadı' adlı boş bir dosya oluşturur. İhtiyacınız olabilecek herhangi bir dosya adı uzantısı kullanın, örneğin '.txt'.

Kaynak: /superuser/502374/equivalent-of-linux-touch-to-create-an-empty-file-with-powershell (yorumlara bakın)


1
kaçırmışsınız gibi görünüyorecho
sabithpocker

Windows cmd'de @sabithpocker, $ null yok ve var olmadığı için herhangi bir çıktı üretmiyor. Bu $null > filenameboş çıktıyı dosya adına gönderirsiniz (sapmamı yakalarsanız).
Keldon Alleyne

1
@sabithpocker Windows Powershell'de, echoihtiyacınız olan standart komut satırı terminalinde (cmd) olmadan çalışır echo. Karışıklık için özür dilerim.
Oliver Schafeld

@OliverSchafeld ve Keldon Açıklama için teşekkür ederim.
sabithpocker

1
Bu dosyaya bir malzeme listesi ekler.
kayleeFrye_onDeck

3

Windows komut penceresinde (cmd.exe) copy con [dosyaadı] öğesini de kullanabilirsiniz :

C:\copy con yourfile.txt [enter]
C:\CTRL + Z [enter] //hold CTRL key & press "Z" then press Enter key.
^Z
    1 Files Copied.

Bu yourfile.txt, yerel dizinde adlı bir dosya oluşturur .


3

söylendiği gibi

echo >> index.html

herhangi bir dosya olabilir, herhangi bir uzantı ile

notepad index.html

bu, dosyanızı not defteri düzenleyicisinde açar


3

Ben kullanım cmder(bir komut satırı emülatör)

Tüm Windows komutlarını bir Windows makinesinde çalıştırmanıza izin verir.

Https://cmder.net/ adresinden indirilebilir.

gerçekten beğendim


1
win10'da Cmder'i açmaya çalıştığımda "Bilinmeyen Yayıncı" uyarısı nedir? Aylak.
Chris22

2

Dosyanın var olduğunu ve zaman damgasını güncellemeniz gerektiğini varsayalım.

type test.c > test.c.bkp && type test.c.bkp > test.c && del test.c.bkp

2

Windows 10'daki Visual Code Studio Terminali'nden, yeni bir dosya oluşturmak için benim için çalışan bu oldu:

type > hello.js
echo > orange.js
ni > peach.js

1

Eğer varsa Cygwin PC'nizde yüklü, sadece verilen yürütülebilir için kullanabileceğiniz dokunmatik (aynı zamanda pencere komut istemi yoluyla):

C:\cygwin64\bin\touch.exe <file_path>


-1

Evet Düğüm için Touch'ı kullanabilirsiniz Sadece bunu kullanıyorum ve Windows Cmd veya gitbash'te tüm iyi çalışıyor

resim açıklamasını buraya girin


Bunu küçümsemedim ama muhtemelen neden olduğunu açıklayacağım. Bu soru etiketlendi [cmd]ve bu da OP'nin CMD için hazır çalışan bir yanıt istediğini, yani varsayılan bir Windows yüklemesi ile paketlenmemiş komut satırı yardımcı programlarının bulunmadığını ima ediyor. Bu, CScript, WScript ve PowerShell gibi yerleşik Windows komut dosyası dillerini bile neredeyse tüm komut dosyası dillerini hariç tutacaktır. Mesele şu ki CMD env'de çalışıyor, ancak CMD'ye erişimi olan herkes için izin sorunları dahil değil.
kayleeFrye_onDeck
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.