2016-04-07 20 views
0

yılında modifiye hatları aşağıdaki metin dosyası var:cmd - bir metin dosyasına

c:/users/desktop 
c:/users/test 
c:/users/etc 
.... 

her çizgi metin dosyasına bir dizi bulunur. Dosyayı değiştirmek istedim, böylece her satırın iki dizesi var. Bu böyle olmalı: Bundan sonra

c:/users/desktop c:/users/desktop 
c:/users/test c:/users/test 
c:/users/etc c:/users/etc 
.... 

, ben yeni bir yol olacak şekilde her satırın ikinci dizesini değiştirmek istiyorum. Takılması gereken parçayı içeren bir sabit NEW_PATH var. Bu değişikliğin ardından şu şekilde görünecektir: Bir çıkış dosyasına tocopy.txt bu kurtarmaya çalışıyorum

c:/users/desktop f:/etc/rel/users/desktop 
c:/users/test f:/etc/rel/users/test 
c:/users/etc f:/etc/rel/users/etc 

.

Bu nasıl yapılabilir?

cevap

0

Bu bir Windows platformuysa,/\ yerine yol ayırıcı olarak kullanılmasının önemi var mı? Dize yer değiştirme ifadesini kullanmak, bu değişikliği yapmanın anahtarıdır.

C:>TYPE tocopy.bat 
@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET EXITCODE=0 

SET "OLDFILE=tocopy_source.txt" 
SET "NEWFILE=tocopy.txt" 
SET "OLDPATH=c:" 
SET "NEWPATH=f:/etc/rel" 

FOR /F "usebackq tokens=*" %%a IN (`TYPE "%OLDFILE%"`) DO (
    SET S1=%%a 
    SET S2=!S1:%OLDPATH%=%NEWPATH%! 
    ECHO %%a !S2! 
) 

EXIT /B %EXITCODE% 

8:39:26.37 C:\Users\pwatson\x 
C:>TYPE tocopy_source.txt 
c:/users/desktop 
c:/users/test 
c:/users/etc 

C:>CALL tocopy.bat >tocopy.txt 

C:>TYPE tocopy.txt 
c:/users/desktop f:/etc/rel/users/desktop 
c:/users/test f:/etc/rel/users/test 
c:/users/etc f:/etc/rel/users/etc 
İlgili konular