2012-07-11 2 views
2

파일 이름이 text.txt이고 여러 줄이 있다고 가정합니다. 각 행은 dayname으로 시작하여 "/"문자로 끝나고 경로가 추가됩니다. 각 행마다 경로가 아닌 파일 이름이 필요합니다. 따라서 나는이 방식에서 파일을 변환 할 뭔가가 필요 :dos에서 특정 문자 앞에 문자열을 삭제하는 방법?

mon/C:\stt\test_file.abc 
sat/C:\Documents and Settings\alguri\Desktop\test_file2.txt 
fri/C:\sat\new_folder2\file3.jpg 

mon/test_file.abc 
sat/test_file2.txt 
fri/file3.jpg 

에 내가 DOS 명령에서이 코드가 필요합니다. 일부 코드를 시도했지만 문자열을 다른 방법으로 구문 분석 할 수 없습니다. 경로 이름은 둘 이상의 "\"char을 가질 수 있기 때문에.

줄에 "\"문자가 2 개만 있다는 것을 알고 있다면주의하십시오. 단지 그러나 다른 모든 라인 "\"문자의 수가 다른 "test_file.abc"입니다 라인 1에 대한 올바른 대답을 줄 것이다

for /f "tokens=1,4 delims=/\" %%a in (text.txt) do (
echo %%a 
    ) 

이 : 내가 좋아하는 뭔가를 할 수 있습니다. 내가 어떻게 처리 할 수 ​​있다고 생각하니?

내 머리 속에 하나의 해결책은 "\"의 개수를 세고 토큰 두 번째 매개 변수를 설정하여 필요한 부분을 결정하는 것입니다. 그러나 나는 그것을 할 수 있었다. 토큰 값 외에도 동적으로 설정하지 못할 수도 있습니다.

+0

DOS를'읽을 수 있습니다. –

+0

토큰 매개 변수를 동적으로 설정한다는 의미입니까? – user1517831

답변

3

매개 변수 수정자를 사용할 수 있습니다.

for /f "tokens=1,* delims=/" %%A in (test.txt) do (
    echo %%A/%%~nxB 
) 

수식에 대한 자세한 정보를 정기적으로 들어 해당 구문을 지원하지 않습니다 for` What does %~dp0 mean, and how does it work?

+1

+1, 이번에는 나를 때려 눕힌다 :-) – dbenham

+0

덕분에 나는 매개 변수 수정자를 검사하여 동작을 이해할 것이다. – user1517831

관련 문제