2011-04-22 2 views
0

나는 .bat 파일을 클릭 할 때마다 현재 날짜로 이름을 바꾸도록 가르치려고합니다.파일의 이름이 바뀌지 않습니까?

누군가가 왜 작동하지 않는지 말할 수 있습니까?

@echo off 
set timeme=%s% 

RENAME %0 %timeme%.bat 
+0

나는 그 코드에서 AI의 명백한 부족이 범인이라고 말할 것이다. –

+0

이름 자체가 나를 위해 작동한다. (나는'% s % '대신에 임의의 문자열을 사용했다.) –

답변

0

아마도 새로운 이름으로 복사하고 이전 파일을 새 파일의 첫 번째 문구로 삭제할 수 있습니다.

또는 원본 파일의 잠금을 해제하고 이름을 바꿀 때까지 기다리는 별도의 스크립트를 만들 수 있습니다. 이 스크립트를 원본 파일의 마지막 문으로 호출하십시오.

1

스크립트가 실행되는 동안 파일이 잠겨 있다고 생각합니다. 이름을 바꿀 수 없습니다. Word에서 문서를 연 경우와 같습니다. 당신이 할 수있는 최선은 복사입니다.

+0

nope nevermind 나는 % random % 옵션을 사용하고있다. 나는 임의로 영숫자 인 – Meldrum

1

내 의견에 말했듯이, 이름 변경 부분은 잘 작동합니다. 그러나 오류 메시지가 생성되며 배치 스크립트는 이름을 바꾼 후 즉시 종료됩니다. 따라서 RENAME 명령은 스크립트의 마지막 명령이어야합니다. (이름 바꾸기 후에도 이름이 바뀌지 않으면 스크립트가 종료되지 않고 어떤 식 으로든 활용할 수 있지만 다른 이야기입니다.)

'가르치는 것'에 문제가 있다면, 귀하의 배치 스크립트 자체를 이름을 바꿀 수있는 방법, 그게 뭔가가 %s% 비트의 할 일이 있다고 가정해야합니다. 새 이름을 현재 날짜로 설정하려고 했으므로 그 부분이 문제의 원인 일 수 있습니다. 따라서 저는이 특정한 자기 이름 바꾸기에 대한 접근 방식을 여러분과 공유하기로했습니다. 여기

@ECHO OFF 
SET timeme=%DATE:/=-% 
SET timeme=%timeme: =-% 
RENAME %0 %timeme%.bat 

내가 DATE 환경 변수의 출력을 사용하고 있습니다 :

다음은 작업 예입니다. 이 변수의 출력은 로컬 설정에 따라 형식이 지정됩니다. 내 컴퓨터에서 그것은 ddd MM/dd/yyyy으로 포맷되어 있으므로 %DATE%Fri 04/22/2011과 같은 것으로 평가됩니다.

출력을 단순히 사용하는 것이 아니라 일부 방법으로 처리하는 것을 볼 수 있습니다. 실제로 / (공백)을 -으로 바꿀 예정이므로 결과를 파일 이름으로 사용할 수 있으므로 큰 따옴표로 이름을 묶을 필요가 없습니다. %DATE% 출력을 확인하여 다른 문자를 대체해야하는지 확인해야 할 수도 있습니다.

하지만 출력을 다르게 사용하는 것이 좋습니다. 예를 들어, 년, 월, 일을 날짜 문자열에서 자르고 부분을 연결하고 결과 문자열을 새 이름으로 사용할 수 있습니다. 당신의 전부 또는 일부를 변경해야 할 수 있도록 다시

SET timeme=%DATE:~-4%%DATE:~4,2%%DATE:~7,2% 

는,이 표현은, 내 날짜 표시 형식을 틀면 : 여기에 그것을 할 수있는 방법의 예입니다 (이것은 yyyyMMdd의 형식으로 부품을 배치) 귀하의 환경에 적응시키기위한 숫자.

하위 문자열 추출 (이전 스크립트 예제에서와 같이 부분 문자열 대체에 대한 자세한 정보)을 얻으려면 언제든지 명령 프롬프트에서 HELP SET을 발행 할 수 있습니다.

+0

+1을 좋아하지만 선의로도 좋습니다. 자기 이름 바꾸기가 실제로 효과가 있었는지 몰랐습니다. –