我正在尝试在文本文件中获取并排文件路径和文件名,以便我可以更轻松地插入数据库。我已经看过围绕SO的其他例子,但我无法理解发生了什么。例如,我看到了batch file to append file names to end of lines,但我认为我不应该要求澄清,因为它已经有1.5年了。
我所拥有的是文件路径的文本文件。它们看起来像这样:
\\proe\igi_files\TIFFS\AD\1_SIZE_AD\1AD0019.tif
我希望它看起来像这样:
1AD0019.tif \\proe\igi_files\TIFFS\AD\1_SIZE_AD\1AD0019.tif
这样我就可以将它插入数据库了。有没有一种简单的方法可以通过批处理文件在Windows上执行此操作?
答案 0 :(得分:2)
不需要批处理文件。从命令行:
>"outputFile.txt" (for /f "usebackq eol=: delims=" %F in ("inputFile.txt") do @echo %~nxF %~dpF)
但是该输出格式存在风险,因为文件和文件夹名称可能包含空格,因此可能很难确定文件名的结束位置和路径开始。最好将文件和路径括在引号内。
>"outputFile.txt" (for /f "usebackq eol=: delims=" %F in ("inputFile.txt") do echo "%~nxF" "%~dpF")
如果在批处理文件中完成,则百分比必须加倍。
@echo off
>"outputFile.txt" (
for /f "usebackq eol=: delims=" %%F in ("inputFile.txt") do echo "%%~nxF" "%%~dpF"
)
您应该阅读FOR命令的内置帮助。从命令提示符处键入help for
或for /?
以获取帮助。该策略几乎适用于所有命令。
答案 1 :(得分:1)
在powershell中,这个小脚本应该可以解决问题。在第一行中,只需指定包含所有文件路径的文本文件的名称。
$filelist="c:\temp\filelist.txt"
foreach($L in Get-Content $filelist) {
$i = $L.length - $L.lastindexof('\') -1
$fname=$L.substring($L.length - $i, $i)
echo ($fname + ' ' + $L)
}
如果您的计算机上未安装PowerShell,请查看http://technet.microsoft.com/en-us/library/hh847837.aspx。
答案 2 :(得分:0)
@ECHO OFF
SETLOCAL
(
FOR /f "delims=" %%i IN (yourfile.txt) DO ECHO %%~nxi %%i
)>newfile.txt
GOTO :EOF
没有大戏 - 所有在一条活动线上,但为了清晰而间隔