2017-12-04 15 views
0

バッチファイル(ウィンドウ)を使用して最後の3列のドットの後に3桁を削除します。ドットは他の列に存在することができます。後バッチスクリプトでドットの後にテキストを編集する

'2016-06-08 11:49:49.370' 

::前 :

4216118,'0806010709','ljubičasti ','Hita kirška ambnta',1,'Eriiti (vk, kk)','X','Uđaj za heološke prege','Celyn1800 ','Hni Sak','Hemlogja','2016-06-08 11:42:05.040','2016-06-08 11:41:42.122','2016-06-08 11:49:49.370' 
4216081,'0806010387','ljubičasti ','Oća doven.amb. - VANJA',1,'Erii (vk, kk)',,'Urj za heoške prage','Adia 120 R','Reni','Hlogija','2016-06-08 08:52:13.962','2016-06-08 08:51:57.067','2016-06-08 11:08:26.504' 
4216667,'1506010909','ljčasti ','tna ambuta kke za invne bolesti',1,'Erciti (vk, kk)',,'Uj za hemloške prge','Cell-Dyn 1800 R','Hi','Hemagija','2016-06-15 21:24:14.646','2016-06-15 21:24:03.523','2016-06-15 21:26:58.871' 
4213710,'0905010991','ljubičasti ','Hna kira amnta',1,'Eociti (vk, kk)','X','Uđaj za hemloške prage','Cel1800 ','Hi Sak','Hemlogja','2016-05-09 17:52:32.231','2016-05-09 17:52:26.319','2016-05-09 18:31:33.643' 

例:

これが私のデータのサンプルです

'2016-06-08 11:49:49' 

答えて

2
@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcedir=U:\sourcedir" 
SET "destdir=U:\destdir" 
SET "filename1=%sourcedir%\q47642335.txt" 
SET "outfile=%destdir%\outfile.txt" 
(
FOR /f "delims=" %%a IN ('more %filename1%') DO (
SET "line=%%a" 
ECHO !line:~0,-57!!line:~-53,-31!!line:~-27,-5!!line:~-1! 
) 
)>"%outfile%" 

GOTO :EOF 

あなたの状況に合わせてsourcedirdestdirの設定を変更する必要があります。

テスト用にデータが入っているファイルq47642335.txtを使用しました。

は%悲しいこと

OUTFILE%と定義ファイルを生成し、cmdは、Unicodeのファイルとうまく再生されないので、データに何らかの変更があるでしょう。本質的には、各行を読み込み、連結する線部分を選択します。-の部分文字列の値を使用して、一貫した構造の行の終わりから選択します。

1

いかなる保証をすることなく、これを試してみてください。あなたの例に関しては、最後の3桁のANDとドットを削除したいと思います.3桁のAFTERドットを削除する記述とは異なります。

@echo off & setlocal ENABLEDELAYEDEXPANSION > out.txt 
for /f "tokens=1-15 delims=," %%a in (data.txt) do (
      set "string=" 
      call :process "%%a" "%%b" "%%c" "%%d" "%%e" "%%f" "%%g" "%%h" "%%i" "%%j" "%%k" "%%l" "%%m" "%%n" "%%o" 
      ) 
exit /B 

:process 
echo %~1| findstr /R /C:"[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*\.[0-9][0-9][0-9]" >NUL 
if not errorlevel 1 (
      set "str=%~1" 
      set "str=!str:~0,-5!" 
      if defined string (set "string=!string!,!str!'") else (set "string='!str!'") 
      ) else (
      set "str=%~1" 
      if defined string (set "string=!string!,!str!") else (set "string='!str!'") 
      ) 
shift   
if not "%~1"=="" (goto :process) else (echo !string!>>out.txt) 
GOTO:EOF 
関連する問題