将ListViewItem存储到bat文件?

时间:2014-05-27 12:47:48

标签: c# batch-file visual-studio-2012 file-io cmd

我正在制作一个使用listView中的文件夹路径的软件,并生成一个隐藏该文件夹的.bat文件!

以下是创建bat文件的按钮:

private void HideItBtn_Click(object sender, EventArgs e)
{
    string[] strArray = new string[500];
    int i = 0;
    StreamWriter hide = new StreamWriter(HideNameTxt.Text + ".bat");
    hide.WriteLine("@Echo off");
    foreach (var cur in FolderList.Items)
    {
        strArray[i] = cur.ToString();
        hide.WriteLine("attrib " + strArray[i] + " +s +h");
        i++;
    }
     hide.Close();
}

它没什么特别的,我把所有listView项放在一个字符串中并使用循环来写一个.bat文件!

这是输出(创建的.bat文件):

@Echo off
attrib ListViewItem: {C:\Users\Sand\Desktop\New folder} +s +h

现在的问题是,当我编写listViewIrem时,它的格式是ListViewItem:{item} 这样.bat文件就不行了!有没有办法删除' ListViewItem:{}'从输出!而只是写了文件夹的路径?

3 个答案:

答案 0 :(得分:0)

您只需使用Text属性:

strArray[i] = cur.Text;

但您还需要将foreach循环更改为:

foreach (ListViewItem cur in FolderList.Items)

答案 1 :(得分:0)

这取决于项目'类型。您正在为每个项目调用ToString()方法。如果您的所有商品都是ListViewItem的类型,则可能需要调用.Text属性。

strArray[i] = ((ListViewItem)cur).Text;

foreach (ListViewItem cur in FolderList.Items)
{
    strArray[i] = cur.Text;
    hide.WriteLine("attrib " + strArray[i] + " +s +h");
    i++;
}

答案 2 :(得分:0)

据我所知,您需要在批处理文件中列出目录。

然后使用:Directory.GetDirectories

private void HideItBtn_Click(object sender, EventArgs e)
{
    StreamWriter hide = new StreamWriter(HideNameTxt.Text + ".bat");
    hide.WriteLine("@Echo off");
string[] dirs = Directory.GetDirectories(@"c:\", "p*", SearchOption.TopDirectoryOnly);
    foreach (var dir in dirs)
    {
        hide.WriteLine("attrib " + dir + " +s +h");
     }
     hide.Close();
}