Windows에서 파일의 날짜 수정 필드를 업데이트하려면 무엇을 사용합니까?
편집 : 이미 CheapScotsman 이 지적한 애플리케이션 용 페이지가 있습니다 .
누구든지 C++, C #, WSH 또는 이와 비슷한, 잘하고 좋은 것을 통해이 작업을 수행 할 수있는 방법을 알고 있다면 그 밖의 모든 것이 덮여 있다고 생각할 것입니다. 링크 된 질문에서.
창을 사용하여 파일의 날짜 스탬프를 만지려면 프롬프트 프롬프트에서 다음 명령을 사용하십시오.
copy /b filename.ext +,,
(여기서 filename.ext
는 파일 이름입니다). +,,
는 copy
에 특수 플래그를 지정하여 파일에 날짜/시간을 간단히 업데이트하도록 지시합니다 .
* 파일의 시간과 날짜 변경
파일을 수정하지 않고 파일에 현재 시간과 날짜를 지정하려면 다음 구문을 사용하십시오.
copy /b Source+,,
쉼표는 Destination 매개 변수의 누락을 나타냅니다.
Lumi와 Justin의 주석을 기반으로 편집하십시오 : 이것을 배치 파일에 넣으십시오. touch.cmd
@COPY /B %1+,, %1
이 파일이 현재 디렉토리 (Windows 7에서 테스트 됨)에 없더라도 작동합니다.
필자는 일반적인 Unix 유틸리티의 Win32 전용 포트 인 unxutils 를 사용하고 추천했습니다. 거기에 touch
명령이 있습니다.
원하는 경우 파일의 마지막 수정 날짜를 변경하는 것입니다 (필자의 경우).
C:\> powershell (ls your-file-name-here).LastWriteTime = Get-Date
type nul >>file & copy file +,,
file
name__을 작성합니다.cmd
내장 함수 만 사용합니다.업데이트
가! touch
name__은 읽기 전용 파일에서는 작동하지 않습니다. 나는 제안한다.
: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"
@ 대쉬 - 톰 - 뱅 :
신비한 '+'및 쉼표에 대한 Technet의 설명은 다음과 같습니다.
복사/b 소스 + ,
쉼표는 Destination 매개 변수의 누락을 나타냅니다.
Copy 명령은 여러 파일을 단일 대상 파일로 병합하는 것을 지원합니다. 공백 대상은 명령 프롬프트에서 공백 문자를 사용하여 지정할 수 없기 때문에 두 개의 쉼표를 사용하여이를 나타낼 수 있습니다.
그리고 이것은 Technet의 복사 명령 참조입니다 : http://technet.Microsoft.com/en-us/library/bb490886.aspx
코드를 직접 코딩하려는 경우 .NET은 File.SetLastAccessTime
, File.SetCreationTime
및 File.SetLastWriteTime
메소드가 있습니다.
다음은 powershell을 사용하는 재귀 버전입니다.이 명령은 모든 파일과 하위 디렉토리의 마지막 수정 시간과이 디렉토리의 하위 디렉토리에있는 파일을 변경합니다.
ps c:myDir> Get-ChildItem . * -recurse | ForEach-Object{$_.LastWriteTime = get-date}
배치 스크립트에서 빈 파일을 만들려고했습니다. 이것을 사용할 수 있습니다 :
ECHO text>file1.txt
cygwin
에는 touch
이 (가) 있습니다. 나는 당신이 전체 프레임 워크를 설치하고 싶지는 않지만 Cygwin은 매우 가볍다 고 말했고 유닉스 계열의 명령 줄을 사용하지 않고 dos 명령 창에서 호출 할 수있다.
설치할 도구를 제어 할 수 있으므로 touch.exe
파일을 설치하고 나머지 프레임 워크는 그대로 둘 수 있습니다.
다음은 Windows 탐색기 에서 마우스 오른쪽 버튼으로 "touch"를 추가 한 간단한 regfile입니다. 방금 전화를 걸기 때문에 쉽게 스크립트 할 수 있습니다.
cmd.exe /c copy %1+nul %1 /by
터치를 포함한 많은 유닉스 명령어의 네이티브 win32 포트 .
이전에 사용했는데 제대로 작동합니다. 설치가 없거나 DLL이 없습니다.
이 코드를 CodeProject 에서 사용해보십시오.
Cygwin 를 설치할 수도 있습니다.이 도구는 다른 * NIX 명령과 마찬가지로 Touch를 제공합니다.
웹 사이트에서 :
Funduc Software Touch 는 하나 이상의 파일에서 시간/날짜 및/또는 속성 스탬프를 변경할 수있는 무료 '터치'유틸리티입니다. 또한 FS Touch는 기존 파일 시간에서 지정된 시간 (초)을 더하거나 뺄 수 있습니다. '복잡한 파일 마스크'를 통해 변경할 파일 및/또는 하위 디렉토리를 지정할 수 있습니다. 프로그램은 대화식 또는 명령 줄에서 실행할 수 있습니다. 버전 7.2의 새로운 기능은 파일 수정 시간 소인 +/- 지정된 초 수를 변경하는 명령 행 스위치입니다.
FS Touch는 Windows XP, Vista, Windows 7 및 Windows 8에서 실행됩니다.
이 내용은 reg 파일에 저장할 수 있습니다. 이렇게하면 "터치 파일"기능 (Windows 7에서 테스트 됨)이있는 모든 파일에 대한 마우스 오른쪽 버튼 클릭 상황에 맞는 메뉴가 추가됩니다. reg 파일에 다음 행을 모두 복사 하십시오 . 파일을 실행하고 질문을 승인하십시오. 파일 (또는 여러 파일)을 마우스 오른쪽 버튼으로 클릭하십시오 - "파일 터치"옵션을 사용할 수 있습니다.
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\" +,,"
어쨌든 codeproject "Windows 용 터치": http://www.codeproject.com/KB/applications/touch_win.aspx
편집하다; 여기와 같은 질문 : https://stackoverflow.com/questions/51435/windows-version-of-the-unix-touch-command/51439
하나 이상의 프로젝트에 git을 사용하는 경우 Windows 용 mingw 기반 git-bash
에는 touch
명령이 있습니다. @ greg-hewgill이 윈도우에 nix 유틸리티가 있다는 것을 지적 해 주신 것에 감사드립니다. 왜냐하면 저에게 bit에서 손을 대볼 생각이 들기 때문입니다.
Vim을 설치 한 경우 빠른 방법을 찾았습니다 (대용량 파일에는 적합하지 않고 파일 전체를 열고 닫을 것입니다 ...)
vim foobar.txt +wq!
"+"는 다음 명령을 실행하기위한 인수를 설정합니다. "wq!" "write, quit, force"입니다. 파일을 열고 저장 한 다음 바로 닫습니다.
% windir %\system32 폴더에 touch.bat로 다음을 저장하거나 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
기본적으로 다른 파일에서 파일 날짜를 복제/복제하는 '터치'기능을 원했고 배치 파일에서 사용할 수 있어야했습니다.
그래서 비디오 파일을 배치 파일에 드래그 앤 드롭하면 FFMPEG가 실행되고 입력 파일의 '만든 날짜'와 '수정 한 날짜'가 출력 파일에 복사됩니다.
이것은 유니 코드 파일 이름을 처리 할 때 배치 파일이 끔찍하고 인라인 PowerShell이 파일 이름 기호로 엉망이되어 이중 이스케이프 처리가 악몽 일 때까지 처음에는 간단 해 보였습니다.
내 솔루션은 '터치'부분을 '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을 실행할 수 있습니다.
시험
fsutil 파일 createnew new.txt 0
위에서 언급 한 5 가지 대안과 여기에 언급되지 않은 3 가지 옵션은 수퍼 유저에서 찾을 수 있습니다. "Windows Recursive Touch Command"
이것은 원래의 질문과 약간 관련이 없지만 GUI로 인해 Windows에서 매우 유용하다고 생각합니다.
나는 GUI (Explorer Shell으로 빌드)를 제공하는 TouchPro 유틸리티를 사용하고 있습니다.
음, 만약 당신이 정말로 touch
명령을 사용하고 싶다면 이것을 touch.bat
라는 배치 파일에 넣고 C:\Windows
에 붙여 넣을 수 있습니다 :
TYPE NUL >>%1
충분히 간단합니다.
유닉스 사람들은 touch 명령을 사용하여 파일의 파일 날짜를 업데이트하는 일반적인 문제를 해결했습니다. 그러나 Windows의 경우 특수한 경우에 대해 더 간단한 방법이 가능한 경우가 있습니다.
응용 프로그램 바둑판의 배경색을 변경하려면 Windows 8.1에서 응용 프로그램 바로 가기의 타임 스탬프를 업데이트해야합니다 this SO question . 위의 영리한 도구 중 하나를 구현하는 대신 바로 가기의 주석 필드를 편집하는 것이 더 쉽습니다. 대부분의 사람들은 이것을 공란으로 남겨 두지 만 물론 유용한 주석을 신속하게 고안합니다. 또한 의견이있는 경우 최종 기간을 추가하거나 제거하면 해를 끼치 지 않습니다.
이 질문은 오래된 질문입니다. Windows 10 시스템에서 터치를 발견했습니다. 나는 여기 (나는 생각한다)에서 힘내를 다운로드하고 설치했다. 그리고 그것은 터치와 다양한 다른 유틸리티가 bin 폴더에있는 것처럼 보인다.