Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用批处理脚本编辑点后的文本_Windows_Batch File_Text Files - Fatal编程技术网

Windows 使用批处理脚本编辑点后的文本

Windows 使用批处理脚本编辑点后的文本,windows,batch-file,text-files,Windows,Batch File,Text Files,我想用批处理文件(windows)删除最后3列中点后的三位数字。请注意,点可以出现在其他列中 这是我的数据示例: 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','2

我想用批处理文件(windows)删除最后3列中点后的三位数字。请注意,点可以出现在其他列中

这是我的数据示例:

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'

试试这个,没有任何保证。关于您的示例,您希望删除最后三位数字和点,这与您描述的删除点后三位数字不同

@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

试试这个,没有任何保证。关于您的示例,您希望删除最后三位数字和点,这与您描述的删除点后三位数字不同

@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
@ECHO关闭
SETLOCAL ENABLEDELAYEDEXPANSION
设置“sourcedir=U:\sourcedir”
设置“destdir=U:\destdir”
设置“filename1=%sourcedir%\q47642335.txt”
设置“outfile=%destdir%\outfile.txt”
(
对于/f“delims=“%%a IN('more%filename1%'),请执行以下操作(
设置“行=%%a”
回声!行:~0,-57!!行:~-53,-31!!行:~-27,-5!!行:~-1!
)
)>“%outfile%”
后藤:EOF
您需要更改
sourcedir
destdir
的设置以适应您的环境

我使用了一个名为
q47642335.txt
的文件,其中包含了测试数据

生成定义为%outfile%的文件

遗憾的是,
cmd
不能很好地处理unicode文件,因此会对数据进行一些修改。基本上,读取每一行并选择要连接的行部分,使用
-
子字符串值从行的末尾进行选择,这是一个一致的结构。

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
设置“sourcedir=U:\sourcedir”
设置“destdir=U:\destdir”
设置“filename1=%sourcedir%\q47642335.txt”
设置“outfile=%destdir%\outfile.txt”
(
对于/f“delims=“%%a IN('more%filename1%'),请执行以下操作(
设置“行=%%a”
回声!行:~0,-57!!行:~-53,-31!!行:~-27,-5!!行:~-1!
)
)>“%outfile%”
后藤:EOF
您需要更改
sourcedir
destdir
的设置以适应您的环境

我使用了一个名为
q47642335.txt
的文件,其中包含了测试数据

生成定义为%outfile%的文件

遗憾的是,
cmd
不能很好地处理unicode文件,因此会对数据进行一些修改。基本上,读取每一行并选择要连接的行部分,使用
-
子字符串值从行的末尾进行选择,这是一个一致的结构