Powershell将文本文件从一个文件夹移动到另一个文件夹

时间:2016-03-07 22:07:48

标签: powershell

我有一个包含多个子文件夹的文件夹,每个文件夹包含大约50个包含文本文件的子文件夹我想将文件从一个文件夹移动到另一个文件夹而不打开每个子文件夹。 有两种文件1. BSEG和2. BKPF

我想在名为BSEG的文件夹中移动以BSEG开头的文件,在名为BKPF的文件夹中移动从BKPF开始的文件

我用于BSEG文件的代码是

 Move-Item D:\Company\SAP\JAN\"BSEG"*.txt D:\Company\BSEG

此代码有效但我必须为每个子文件夹编写更新代码,我希望帮助修改此代码,以便查找所有子文件夹

2 个答案:

答案 0 :(得分:1)

dfundako有一半。 Move-Item不会进入子文件夹。将Get-ChildItem-Recurse开关一起使用可以帮助您获取要移动的文件。

您还可以移动两组不同的文件。永远不要重复需要重用的代码。因此,让我们使用两个文件集进行简单的foreach循环。这很有效,因为您将相同前缀的文件移动到自己的文件夹中。

foreach($fileType in $fileTypes){
    Get-ChildItem -Path D:\Company\SAP\JAN\ -Filter "$fileType*.txt" -Recurse | 
        Move-Item -Destination D:\Company\$fileType
}

答案 1 :(得分:0)

Powershell使用-recurse来实现这一目标。试一试。 -recurse piece告诉它命中每个子文件夹,然后将输出传递给移动项。值得注意的是,这不会抓取文件夹结构,只捕获文件,如果您尝试移动具有相同名称的文件,它也将失败。

#include <iostream>
#include <cctype>
#include <string>

using namespace std;

int main() {

    // set variables

    string input_string;
    int string_length;
    bool isupper;
    bool isdig;
    int count;
    char current_var;
    string output_string;

    // Query user

    cout << "Welcome to Josh's Password Generator. Enter a password and I will convert it into numbers for entry in a touchtone phone." << endl;
    cin >> input_string;



    // calculations

    string_length = (int)input_string.length();
    count = 0;


    while(count <= string_length)

        if (input_string.at(count) == 'a' || input_string.at(count) == 'b' || input_string.at(count) == 'c')
    {
        current_var = 1;
    }
        else if (input_string.at(count) == 'd' || input_string.at(count) == 'e' || input_string.at(count) == 'f')
    {
       current_var = 2;
    }
    else if (input_string.at(count) == 'g' || input_string.at(count) == 'h' || input_string.at(count) == 'i')
    {
        current_var = 3;
    }
    else if (input_string.at(count) == 'j' || input_string.at(count) == 'k' || input_string.at(count) == 'l')
    {
        current_var = 4;
        }
        else if (input_string.at(count) == 'm' || input_string.at(count) == 'n' || input_string.at(count) == 'o')
        {
            current_var = 5;
        }
        else if (input_string.at(count) == 'p' || input_string.at(count) == 'q' || input_string.at(count) == 'r')
        {
            current_var = 6;
        }
        else if (input_string.at(count) == 's' || input_string.at(count) == 't' || input_string.at(count) == 'u')
        {
            current_var = 7;
        }
        else if (input_string.at(count) == 'v' || input_string.at(count) == 'w' || input_string.at(count) == 'x')
        {
            current_var = 8;
        }
        else if (input_string.at(count) == 'y' || input_string.at(count) == 'z')
        {
            current_var = 9;
        }
        else
            current_var = input_string.at(count);

        input_string = input_string.replace(count, current_var);

        count = count + 1;


    }