我已经生成了(在你们的帮助下)代码,它们结合了.txt文件并根据文件内容重命名文件!谢谢到目前为止!
@Echo Off
Set _Path=%~dp0
PushD %_Path%
For /F "Tokens=1 Delims=" %%a In ('Dir /A-D /B *.txt') Do (
Echo %%a
For /F "Usebackq Tokens=1 skip=1 Delims=" %%I In ("%%a") Do >>"%temp%\%%a" Echo.%%I
Move /Y "%temp%\%%a" .\
)
PopD
COPY %~dp0\PreSet.txt + %~dp0\Header.txt + %~dp0\Item.txt %~dp0\_BOM_.txt
setlocal enableDelayedExpansion
set "dir_with_files=%~dp0"
for %%# in ("%dir_with_files%\*_BOM_*") do (
set "date_="
set "number="
for /f "usebackq skip=1 tokens=3,4,5,6 delims=. " %%a in ("%%#") do (
if not defined date_ (
set "date_=%%a%%b%%c"
set "number=%%d"
)
)
ren "%%~f#" "!date_!_BOM_!number!%%~x#"
)
endlocal
现在我遇到的问题是,我所有新的.txt文件的最后一行都有一个符号(""),它没有被删除,我想删除它(可能会删除整个线?)。
实施例
有人可以帮我解决这个问题吗?
提前感谢您的帮助。
答案 0 :(得分:1)
那是EOF
(文件结束)。使用copy
开关/b
以二进制模式(逐字节复制)而不是文本模式进行复制:
COPY /b %~dp0\PreSet.txt + %~dp0\Header.txt + %~dp0\Item.txt %~dp0\_BOM_.txt
注意:如果文件的最后一行末尾没有换行符,则下一个文件的第一行将附加到最后一行(复制二进制文件意味着“按原样,不添加换行符)
答案 1 :(得分:0)
您可以使用GNU sed
:
sed -i '$ d' yourfile.txt
快速解释:
sed
是一个流编辑器-i
选项代表--in-place
,表示我们正在编辑指定的文件$
表示文件中的最后一行,d
表示删除操作的sed命令