0

我正在尝试在文本文件中获取并排的文件路径和文件名,以便更轻松地插入数据库。我已经查看了围绕 SO 的其他示例,但我无法理解发生了什么。例如,我看到这个批处理文件将文件名附加到行尾,但我认为我不应该要求澄清,因为它已有 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 上执行此操作?

4

3 回答 3

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 forfor /?从命令提示符获取帮助。该策略几乎适用于所有命令。

于 2013-07-22T17:20:45.610 回答
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

于 2013-07-22T17:34:17.753 回答
0
@ECHO OFF
SETLOCAL
(
FOR /f "delims=" %%i IN (yourfile.txt) DO ECHO %%~nxi %%i
)>newfile.txt
GOTO :EOF

没有什么大戏——都在一条活跃的线上,但为了清晰起见

于 2013-07-22T17:21:02.350 回答