是否有命令让CMD或C#在文件中查找特定的文件,然后将该文件复制到其他文件夹?
我正在尝试创建批处理文件,使用命令查找包含特定单词的文件,然后将这些文件复制/移动到某个文件夹,我是如何做到的 我试试这个:是否有命令让CMD或C#在文件中查找特定的文件,然后将该文件复制到其他文件夹?,c#,cmd,C#,Cmd,我正在尝试创建批处理文件,使用命令查找包含特定单词的文件,然后将这些文件复制/移动到某个文件夹,我是如何做到的 我试试这个: @echo off for /f "delims=" %%a in ('dir *.txt /b /a-d ^|find "hello" ') do copy "%%a" C:\final pause 它复制名称为“hey”的文件,但不复制C中包含“-hey”的文件。您可以这样做: void Main() { var searchFor = "hello";
@echo off
for /f "delims=" %%a in ('dir *.txt /b /a-d ^|find "hello" ') do copy "%%a" C:\final
pause
它复制名称为“hey”的文件,但不复制C中包含“-hey”的文件。您可以这样做:
void Main()
{
var searchFor = "hello";
var folder = @"c:\temp";
var files = new DirectoryInfo(folder)
.GetFiles("*.txt",SearchOption.TopDirectoryOnly)
.Where(n => Regex.IsMatch(File.ReadAllText(n.FullName),searchFor,RegexOptions.IgnoreCase));
foreach (var f in files)
{
Console.WriteLine(f.FullName);
}
}
如果您正在寻找现成的实用工具,请检查voidtools的所有内容。Total Commander的Alt+F7是另一个,还有其他的。在C#中,您可以这样做:
void Main()
{
var searchFor = "hello";
var folder = @"c:\temp";
var files = new DirectoryInfo(folder)
.GetFiles("*.txt",SearchOption.TopDirectoryOnly)
.Where(n => Regex.IsMatch(File.ReadAllText(n.FullName),searchFor,RegexOptions.IgnoreCase));
foreach (var f in files)
{
Console.WriteLine(f.FullName);
}
}
如果您正在寻找现成的实用工具,请检查voidtools的所有内容。Total Commander的Alt+F7是另一个选项,还有其他选项。您尝试在
dir
命令的输出中查找您的字符串,因此您只能获得文件名中包含该字符串的文件名
findstr/m“hello”*.txt提供包含搜索字符串的文件的文件名(有关详细信息,请参阅findstr/?
)。将一个for/f
循环环绕以处理这些文件:
for /f "delims=" %%a in ('findstr /m "hello" *.txt') do copy "%%a" C:\final\
您尝试在dir
命令的输出中查找
您的字符串,因此您只能获得文件名中包含该字符串的文件名
findstr/m“hello”*.txt提供包含搜索字符串的文件的文件名(有关详细信息,请参阅findstr/?
)。将一个for/f
循环环绕以处理这些文件:
for /f "delims=" %%a in ('findstr /m "hello" *.txt') do copy "%%a" C:\final\
在PowerShell中,您可以执行以下操作。当您确信将复制正确的文件时,请从复制项目
中删除-WhatIf
$FileDir = 'C:\src\t'
$FileFilter = '*.txt'
$Pattern = 'hello'
$NewDir = $Env:TEMP
Get-ChildItem -File -Path $FileDir -Filter $FileFilter |
ForEach-Object {
if (Select-String -Path $_ -Pattern $Pattern -Quiet) {
Copy-Item -Path $_ -Destination $NewDir -WhatIf
}
}
在PowerShell中,您可以执行以下操作。当您确信将复制正确的文件时,请从复制项目
中删除-WhatIf
$FileDir = 'C:\src\t'
$FileFilter = '*.txt'
$Pattern = 'hello'
$NewDir = $Env:TEMP
Get-ChildItem -File -Path $FileDir -Filter $FileFilter |
ForEach-Object {
if (Select-String -Path $_ -Pattern $Pattern -Quiet) {
Copy-Item -Path $_ -Destination $NewDir -WhatIf
}
}
DIR命令正在沿管道发送文件name
。FIND正在检查文件名而不是文件内容。文件名应该包含特定的单词还是文件内容应该包含单词?@MoritzSchmidt content包含单词。我的意思是,如果我的1.txt内容包含“嘿”,2.txt内容包含“你好”,3.txt内容包含“嘿”,那么只有文件1和3会被复制如果你问你是否可以用C#(或任何其他语言)写这样的东西,那么是的,你可以。@CetinBasoz我问你怎么写?使用CMD?DIR命令可以沿管道发送文件name
。FIND正在检查文件名而不是文件内容。文件名应该包含特定的单词还是文件内容应该包含单词?@MoritzSchmidt content包含单词。我的意思是,如果我的1.txt内容包含“嘿”,2.txt内容包含“你好”,3.txt内容包含“嘿”,那么只有文件1和3会被复制如果你问你是否可以用C#(或任何其他语言)写这样的东西,那么是的,你可以。@CetinBasoz我问你怎么写?CMD有可能吗?