Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有命令让CMD或C#在文件中查找特定的文件,然后将该文件复制到其他文件夹?_C#_Cmd - Fatal编程技术网

是否有命令让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有可能吗?