我在文本文件中有这种类型的数据。
www.example.com/link1 1
www.example.com/link2 2
。。。有任何方法可以通过命令promtp找到副本吗?
我在窗户上
我检查了其他答案,但它们都是针对linux的。
PS:我不仅需要找到它们,还需要删除副本。它们是文本文件中的数千个URLS,显然是数百个副本。
发布于 2016-01-16 21:51:20
你需要找到这些副本有什么原因吗?
如果您需要找到它们以删除它们,我建议将这些信息复制到excel电子表格中。excel中有一些筛选选项,可以帮助您整理您选择的信息。
这里有一个可能帮助您解决问题的链接:
如果这不是你要找的,我很抱歉。
发布于 2016-01-16 22:26:46
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q34835472.txt"
SET "last="
FOR /f "delims=" %%a IN ('sort "%filename1%"') DO (
IF "%%a"=="!last!" ECHO %%a
SET "last=%%a"
)
GOTO :EOF
您需要更改sourcedir
的设置以适应您的情况。
我使用了一个名为q34835472.txt
的文件,其中包含了一些测试数据。
这无疑会显示出对某些字符的敏感性,这在批处理脚本中是常见的,但考虑到您提供的小示例,这不太可能是一个问题。
它的工作方式是简单地对文件进行排序,然后检测每一行是否与前一行完全相同,因为sort
将将相同的行组合在一起。
总是最好提供要解决的实际问题--节省浪费的精力。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
DEL u:\result.txt 2>nul
ECHO START AT %time%
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q34835472.txt"
SET "filename2=%sourcedir%\q34835472.xtx"
SORT "%filename1%" /t u:\ /o "%filename2%"
SET "last="
PUSHD "U:\"
FOR /f "usebackqdelims=" %%a IN ("%filename2%") DO (
IF "%%a" neq "!last!" SET "last=%%a"&>>u:\result.txt ECHO %%a
)
POPD
ECHO end AT %time%
GOTO :EOF
注意到U:
是一个漫游者。
sort
使用可用的最快选项执行,包括使用/t
选项作为临时位置,而不是te默认值(一般临时目录%temp%,通常是常规驱动器)。
使用包含~5 5Mlines的110 my源文件,在我的机器上花费了不到12分钟。
https://stackoverflow.com/questions/34835472
复制相似问题