Windows 재귀 터치 명령 포함)의 모든 파일을 재귀 적으로 터치하려면 어떻게해야합니까? Windows

Windows 7에서 날짜 / 시간 스탬프를 업데이트하기 위해 디렉토리 (하위 디렉토리 포함)의 모든 파일을 재귀 적으로 터치하려면 어떻게해야합니까?

Windows 7에는이를 수행 할 수있는 메커니즘이 있습니까?



답변

몇 가지 가능성이 있습니다.

  • 유닉스의 포트를 사용하여 touch명령을 단순히 결합 findtouch유닉스 방식이다. 몇 가지 선택이 있습니다. GNUWin32 , cygwinunxutils종종 언급됩니다 . 덜 알려져 있지만 더 나은 어떤면에서의 도구 SFUA 유틸리티 툴킷 에서 실행, UNIX 기반 응용 프로그램 용 하위 시스템 윈도우 7 얼티밋 에디션 및 Windows Server 2008 R2와 함께 상자에 바로 제공됩니다. (Windows XP의 경우, Services for UNIX 버전 3.5를 다운로드 하여 설치할 수 있습니다 .)이 툴킷에는 Korn 및 C 쉘 에서 다음 과 같은 다양한 명령 행 TUI 도구 가 있습니다.mvduperl그리고 awk. x86-64와 IA64 맛뿐만 아니라 x86-32로도 제공됩니다. 이 프로그램은 에뮬레이터 DLL (예 cygwin1.dll:)을 Win32보다 계층화 하지 않고 Windows의 고유 한 적절한 POSIX 환경에서 실행 합니다. 그리고 네, 툴킷은 가지고 touchfind,뿐만 아니라 일부 (300) 등이 있습니다.
    이러한 모든 툴킷은 물론 모든 파일을 만질 때마다 별도의 프로세스를 실행한다는 잘 알려진 단점이 있습니다. 다음과 같은 대안에는 문제가 없습니다.

  • touch사람들이 작성하고 게시 한 많은 기본 Win32 명령 중 하나를 사용하십시오 . 그들 중 많은 사람들이 유닉스 find를 감쌀 필요없이 재귀를 수행하는 옵션을 지원 합니다. (그들은이 모든 후, 찾고있는 userbase가 대상 touch이 포팅 유닉스 명령의 전체 부하가 없기 때문에 명령을 사용합니다.) 그 중 하나 인 스테판 Duguay의touch 당신이 가지고 볼 수있는 --recursive옵션을 선택합니다.

  • CMD의 신비한 신비로 영리하십시오. 다른 답변에서 언급했듯이 명령 COPY /B myfile+,,의 알려진 “플러스”구문을 사용하여 파일의 마지막 수정 날짜 스탬프를 업데이트합니다 COPY(자세한 내용은 여기서 우연히 찾을 수 있음 ). 이것은 물론 FOR /R다른 답변에서 암시 된 것처럼 재귀 적으로 작업을 수행하기 위해 결합 될 수 있습니다 .

  • 대체 명령 인터프리터를 사용하고 CMD보다 영리하고 단순합니다. JP Software의 TCC / LE 는 그러한 것 중 하나입니다. 그것은 추가 /S로 옵션 COPY명령을 하나를 사용할 수 있다는 것을 의미 COPY /SA에 대한 필요성 제거하기 위해 “플러스”구문 FOR래퍼. 그러나 TCC / LE에는 옵션 을 직접 지원하는 내장 TOUCH 명령이 있다는 점을 고려할 때 여전히 인생을 불필요하게 어렵게 만들고 /S있습니다.


답변

그것들은 쉽게 구할 수 있으므로 unxutils 를 활용하는 것이 좋습니다 . 여기에는 findtouch명령이 포함되어 있어이를 매우 쉽게 수행 할 수 있습니다.

최상위 디렉토리로 변경 한 후 수정하십시오.

찾기 . -type f -exec touch {} +


답변

기존 Windows 기능 만 사용하려면 (추가로 설치하지 않아도 됨) 다음 중 하나를 시도하십시오.

forfiles /P C:\Path\To\Root /S /C "cmd /c Copy /B @path+,,"

(지정된 경로에서 시작하는 모든 파일을 재귀 적으로 “터치”)

또는

forfiles /S /C "cmd /c Copy /B @path+,,"

(현재 디렉토리에서 시작하는 모든 파일을 재귀 적으로 “터치”)


답변

나는 이것이 아마도 너무 늦다는 것을 알고 있지만 그럼에도 불구하고 다른 누군가가 같은 것을 필요로 할 경우를 대비하여 대답을 남길 것입니다.

John T의 대답은 Windows 7에서 나에게 도움이되지 못했습니다. 일부 연구 결과 SKTimeStamp 라는 유틸리티가 발견되었습니다.이 유틸리티는 완벽하게 작동합니다.

작동 방식에 대한 자세한 내용은 다음과 같습니다. http://www.trickyways.com/2009/08/how-to-change-timestamp-of-a-file-in-windows-file-created-modified-and -accessed / .

수행해야 할 단계는 다음과 같습니다.

  • 응용 프로그램 설치
  • 타임 스탬프를 변경해야하는 디렉토리로 이동
  • 탐색기가 모든 파일을 표시하도록 검색 상자에서 *를 검색하십시오.
  • 모든 파일을 찾았 으면 모두 선택하고 마우스 오른쪽 버튼을 클릭 한 후 속성을 선택하십시오.
  • 대화 상자에서 TimeStamps 탭을 선택하십시오
  • 필요에 따라 날짜와 시간을 조정하고 터치를 클릭하십시오

짜잔! 모든 파일이 업데이트되었습니다! 유닉스 유틸리티 나 명령 줄이 필요 없습니다.


답변

또는 이미 “터치”도구가 있으면 Windows에 이미 내장 된 도구를 사용할 수 있습니다.

for /r %i in (C:\Path\To\Root\*) do @touch "%i"

또는

forfiles /P C:\Path\To\Root /S /C "touch @file"

(NB : 배치 파일에서이 작업을 수행하고 for명령 을 사용하려면 변수에 이중 백분율 기호를 사용해야합니다 (예 : %%i대신 %i)


답변

그것은 나를 위해 Windows 7에서도 실패했습니다. 다른 구문을 사용하여 작동 시켰습니다.

forfiles /c "cmd /c touch @file"

참고로, 재귀 옵션을 사용하지 않았습니다.


답변

Powershell 사용 :

C:\> powershell  (ls your-file-name-here).LastWriteTime = Get-Date