'touch'와 같은 Windows (즉 index.html을 만드는 node.js 방법)


196

Windows 컴퓨터 에서이 오류가 발생합니다

'touch'는 내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다.

지시 에 따라 할 때 :

touch index.html app.js style.css

'touch'를 사용하는 것과 동등한 창이 있습니까? 이러한 종류의 명령을 구현하려면 이러한 파일을 직접 작성하고 타임 스탬프를 변경하도록 수정해야합니까? 그것은 ... 노드처럼 보이지 않습니다 ...


5
간단한 구글 검색 의 창 구현의 쇼는 많은 touch. 여기에 다른 토론 : superuser.com/questions/10426/…Cygwin 라이브러리 는 Windows에서 Unix 명령의 공통 도구 세트입니다.
jfriend00



1
로 이동하십시오 Raghuveer의 대답 은 PowerShell을 사용하는 동안 여기에 착륙 한 직접합니다.
RBT

답변:


279

cmd 창에서 다음을 입력하십시오.

type nul > your_file.txt

your_file.txt 파일에 0 바이트가 생성됩니다.

이를 수행하는 다른 방법은 echo 명령 을 사용하는 것입니다 .

echo.> your_file.txt

에코. -빈 줄이 하나있는 파일을 만듭니다.

2019-04-01에 편집 :

파일 내용을 보존해야하는 경우> 대신>를 사용하십시오.

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

type nul >> your_file.txt

2020-04-07에 편집 됨

call 명령을 사용할 수도 있습니다 .

부모 배치 프로그램을 중지하지 않고 다른 배치 프로그램을 호출합니다. call 명령은 레이블을 호출 대상으로 승인합니다.

예:

call >> your_file.txt

2
Windows 7에서 첫 번째 옵션은 무서운 대화 상자를 생성 한 다음 access denied콘솔에 표시됩니다. 두 번째 옵션은 잘 작동합니다!
해독

13
대답이 잘못되었습니다. 파일이 존재하지 않을 때만 작동합니다. 파일이 존재하는 경우, >>첫 번째 방법은 아무 것도 사용 하지 않고 두 번째 파일은 파일 끝에 줄을 추가합니다. 정답은 superuser.com/questions/10426/…
stenci

3
@stenci-방금 존재하지 않는 파일에서 시도했지만 정상적으로 작동했습니다. 파일을 만들었습니다. 어쩌면 관리자 권한이 없습니까?
dcp

2
@stenci는 슈퍼 유저 링크가 훌륭합니다. 답변으로 게시해야합니다.
Denise Skidmore

@DeniseSkidmore 감사합니다, 답변을 추가했습니다. 그것은 깊어지고 사람들은 내 대답 보다이 답변에 대한 나의 의견을 읽을 가능성이 더 높지만 지금 거기에 있습니다.
stenci

67

Windows에는 기본적으로 touch명령이 포함되어 있지 않습니다 .

사용 가능한 공개 버전 중 하나를 사용하거나 고유 한 버전을 사용할 수 있습니다. 이 코드를 다른 이름으로 저장 touch.cmd하고 경로 어딘가에 배치하십시오

@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

인수 목록을 반복하고 존재하는 경우 각 요소에 대해 파일 시간 소인을 업데이트하거나 그렇지 않으면 작성하십시오.


이것은 최고입니다. 예상 한대로 정확하게 작동합니다 ... 여기 다른 솔루션은 작동하지만 경고 / 오류 텍스트는 IDK입니다.
Shakil

35

이 명령을 사용할 수 있습니다 : ECHO >> filename.txt

현재 폴더에 주어진 확장자를 가진 파일을 만듭니다.

최신 정보:

빈 파일 사용 : copy NUL filename.txt


8
더 나은 type NUL > filename(0 바이트 파일을 만듭니다)
krzemian

24
터치와 마찬가지로 파일이있는 경우 파일을 덮어 쓰지 않습니다.type NUL >> filename
henon

3
이것은 "ECHO가 켜져 있습니다"를 추가하는 좋은 방법입니다. 파일에.
ripvlan

4
기존 파일의 타임 스탬프는 업데이트되지 않습니다.
Denise Skidmore

1
Denise Skidmore가 OP가 아닌 henon에 응답하고 있다고 생각합니다. (저는 그녀의 의견을 두 번째로 말합니다.)
Keith Russell

28

대답이 잘못되었습니다. 파일이 존재하지 않을 때만 작동합니다. 파일이 존재하는 경우, 첫 번째 방법은 아무 것도 사용하지 않고 두 번째 파일은 파일 끝에 줄을 추가합니다.

정답은 다음과 같습니다.

copy /b filename.ext +,,

나는 그것을 여기에서 발견했다 : /superuser/10426/windows-equivalent-of-the-linux-command-touch/764721#764721


1
파일이 존재하지 않으면이 답변이 작동하지 않습니다. (CMD는 오류를 생성합니다.)
Keith Russell

15

나는 여기에 얼마나 많은 대답이 틀렸는 지 놀랐다 . 파일에 아무것도 넣지 않으면 파일이와 같이 채워지고 파일 ECHO is ON에 에코하려고 $nul하면 문자 그대로 파일에 배치 $nul됩니다. 또한 PowerShell의 $null경우 파일로 에코 하면 실제로 0kb 파일이 아니라로 인코딩 된 UCS-2 LE BOM파일이 생성되므로 파일에 바이트 순서 표시 가 없어야 하는 경우 지저분해질 수 있습니다.

여기에있는 모든 답변을 테스트하고 유사한 답변을 참조한 후에는 콘솔 셸별로 작동한다고 보장 할 수 있습니다. 그냥 변경 FileName.FileExtension당신이 원하는 파일의 전체 또는 상대 경로에 touch; 업데이트 해 주신 Keith Russell 에게 감사드립니다 COPY NUL FILE.EXT:

타임 스탬프 업데이트가 포함 된 CMD

copy NUL FileName.FileExtension

이렇게하면 FileName.FileExtension크기가 0 바이트가 아니라 배치 한 파일이 새 파일로 생성 됩니다. 파일이 이미 존재하면 기본적으로 타임 스탬프를 업데이트하기 위해 제자리에 자체 복사됩니다. 나는 이것이 1 : 1 기능보다 더 많은 해결 방법이라고 말하고 touch있지만 다른 내용을 변경하지 않고 파일의 타임 스탬프를 업데이트 할 수있는 CMD를위한 내장 도구를 모른다.

타임 스탬프 업데이트가없는 CMD

if not exist FileName.FileExtension copy NUL FileName.FileExtension

Powershell w / Timestamp 업데이트

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

예, 콘솔 내에서 단일 라이너로 작동합니다. PowerShell 스크립트 파일에 배치 할 필요가 없습니다.

타임 스탬프 업데이트가없는 PowerShell

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


1
파일이 존재하고 수정 시간 소인을 현재 시간으로 업데이트하려는 상황은 어떻습니까? 이 예제가 어떻게 달성되는지 알 수 없습니다.
RoG

2
대단한 관찰, RoG! 이 문제를 해결하기 위해 답변을 업데이트했습니다 :)
kayleeFrye_onDeck

이것이 가장 좋은 대답입니다. 그러나 후자는 더 짧고 동일한 작업을 수행 하기 때문에으로 대체 fsutil file CreateNew FileName.FileExtension 0하여 여전히 개선하고 있습니다 copy NUL Filename.FileExtension.
Keith Russell

@KeithRussell IIRC 내가 사용하지 않은 특정 이유가 있었다 copy이상 fsutil하지만 난 확신이 전도에 대해 알게 어떻게 해요 동안 ... 그것은을이었다 fsutil하하! 왜 그런지 알아 내려고 노력하겠습니다 ...
kayleeFrye_onDeck

1
그들이 똑같이 행동하더라도 속도 테스트없이 하나가 더 좋다고 말하는 것은 너무 이른 것 같습니다.
Keith Russell

14

명령 행에서 다음 명령을 사용하십시오.

fsutil file createnew filename  requiredSize

다음과 같은 매개 변수 정보 :

fsutil-파일 시스템 유틸리티 (실행중인 실행 파일)

file-파일 작업을 트리거합니다

createnew-수행 할 조치 (새 파일 작성)

filename-말 그대로 파일 이름

requiredSize-작성된 파일에서 파일 크기를 바이트 단위로 할당합니다


2
이것이 적절한 답변으로 간주 되려면 약간의 설명이 필요합니다. 이 다섯 단어가 무엇을 의미하는지는 확실하지 않습니다.
jfriend00

1
나를 위해 일한 ... requiredSize 일이 이상하지만 ... 명령은 수천 개의 NULLs로 새 파일을 채 웁니다 ... 이상한 ... 그래서 0을 사용하면 requiredSize를 건너 뛰면 오류가 발생합니다 .. .
dsdsdsdsd

1
이 commnad는 관리자 권한이 필요합니다 :(
ADJ

1
touch는 새 파일을 만들지 않고 기존 파일의 타임 스탬프도 업데이트합니다.
Denise Skidmore

1
터치는 에코 또는 유형에 가장 가까운 방법입니다. 스크립팅에 매우 유용한 도구이지만 WS16에서 널리 사용되지만 엄지 손가락입니다! docs.microsoft.com/ko-kr/windows-server/administration/…
Alan Alan

10

Windows Power Shell에서 다음 명령을 사용할 수 있습니다.

New-Item <filename.extension>

또는

New-Item <filename.extension> -type file

참고 : 새로운 품목은 그것의 별칭으로 대체 될 수 NI


1
이것은 PowerShell이 ​​기본 명령 셸 프로그램 인 오늘날의 Windows 환경에서 실제로 해답입니다.
RBT

어떤 Windows를 참조하는지 모르는 경우, 새로운 Windows 10을 설치했으며 Powershell은 기본 쉘이 아닙니다. 'New-Item' is not recognized as an internal or external command
user5359531

8

다음 명령을 사용하여 터치 기능을 복제 할 수 있습니다.

$>>filename

이 작업은이라는 프로그램을 실행하려고 시도 $하지만 $존재하지 않거나 출력을 생성하는 실행 파일이 아닌 경우 출력이 생성되지 않습니다. 본질적으로 기능에 대한 해킹이지만 다음과 같은 오류 메시지가 나타납니다.

'$'은 (는) 내부 또는 외부 명령, 실행 가능한 프로그램 또는 배치 파일로 인식되지 않습니다.

오류 메시지를 원하지 않으면 다음 두 가지 중 하나를 수행 할 수 있습니다.

type nul >> filename

또는:

$>>filename 2>nul

그만큼 type 명령은 nul의 내용을 표시하려고 시도하지만 읽을 때 EOF (파일 끝) 만 반환합니다.

2>nul오류 출력 (출력 2)을 nul로 보냅니다 (기록 될 때 모든 입력을 무시 함). 분명히 두 번째 명령 (with 2>nul)은 type입력이 더 빠르기 때문에 명령에 의해 중복됩니다 . 그러나 이제 최소한 옵션과 지식이 있습니다.


이것은 훌륭하지만 %ERRORLEVEL%항상 0이 아닙니다. noop을 추가 || cd.하여이 문제를 해결할 수는 있지만 항상 오류를 0으로 설정합니다. "touch"가 실패하면 원하는 결과가 아닐 수도 있습니다.
Keith Russell

5

Windows Powershell 터미널에서 Unix / Mac OS X의 'touch'명령을 에뮬레이트하는 데 명령 typeecho필요 하지 않습니다 . 다음 속기를 사용하십시오.

$null > filename

현재 위치에 'filename'이라는 빈 파일이 생성됩니다. 필요한 파일 이름 확장자 (예 : '.txt')를 사용하십시오.

출처 : /superuser/502374/equivalent-of-linux-touch-to-create-an-empty-file-with-powershell (댓글 참조)


1
당신이 놓친 것 같습니다echo
sabithpocker

Windows cmd의 @sabithpocker에서 $ null은 존재하지 않으며 존재하지 않으므로 출력을 생성하지 않습니다. 당신 $null > filename은 그 빈 출력을 파일 이름으로 보냅니다 (내 드리프트를 잡는 경우).
Keldon Alleyne

1
@sabithpocker Windows Powershell echo에서는 필요한 표준 명령 줄 터미널 (cmd) 없이 작동 합니다 echo. 혼란을 드려 죄송합니다.
Oliver Schafeld

@OliverSchafeld와 Keldon 설명해 주셔서 감사합니다.
sabithpocker

1
파일에 BOM이 추가됩니다.
kayleeFrye_onDeck 1

3

Windows 명령 창 (cmd.exe)에서 copy con [filename] 을 사용할 수도 있습니다 .

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

yourfile.txt로컬 디렉토리에 이름이 지정된 파일이 생성됩니다 .


3

말한 바와 같이

echo >> index.html

확장명을 가진 모든 파일이 될 수 있습니다.

notepad index.html

메모장 편집기에서 파일이 열립니다.


3

나는 사용한다 cmder (명령 줄 에뮬레이터)

Windows 시스템 내에서 모든 Linux 명령을 실행할 수 있습니다.

에서 다운로드 할 수 있습니다 https://cmder.net/

난 정말 좋아


1
win10에서 Cmder를 열려고 할 때 "알 수없는 게시자"경고는 무엇입니까? 버머.
Chris22

2

파일이 존재하고 타임 스탬프 만 업데이트하면된다고 가정합니다.

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

2

Windows 10의 Visual Code Studio 터미널에서 새 파일을 만드는 데 도움이되었습니다.

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

1

당신이있는 경우 Cygwin에서이 사용자의 PC에 설치, 당신은 단순히 공급 실행에 사용할 수있는 터치 (또한 윈도우 명령 프롬프트를 통해 일) :

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


-1

예, 터치 노드를 사용할 수 있습니다. 그냥 사용하고 Windows Cmd 또는 gitbash에서 잘 작동합니다.

여기에 이미지 설명을 입력하십시오


나는 이것을 하향 투표하지 않았지만 아마도 그 이유를 설명 할 것입니다. 이 질문에는 태그가 붙어 있으며 [cmd]OP는 기본 Windows 설치로 압축되지 않은 명령 줄 유틸리티가 없음을 의미하는 CMD에서 기본적으로 작동하는 답변을 원한다는 것을 의미합니다. CScript, WScript 및 PowerShell과 같은 기본 제공 Windows 스크립팅 언어조차 거의 모든 스크립팅 언어를 제외합니다. 요점은 CMD 환경에서 작동한다는 것이 아니라 권한 문제를 포함하지 않고 CMD에 액세스 할 수있는 사람이라면 누구나 가능하다는 것입니다.
kayleeFrye_onDeck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.