我有大约200个文件夹,我必须重命名。每个文件夹包含多个子项,但我只想重命名父项。我知道不应该首先要求它,但不是我已经处于这种情况。一个接一个地重命名它们需要很长时间,我想以某种方式自动化它。是否可以这样做?
答案 0 :(得分:0)
只需使用命令行tf.exe即可。只需200次重命名,你可以只调用tf.exe 200次" tf重命名为foo bar"然后检查所有更改。 您还可以探索powershell选项(有tfs cmdlet)。 最后但并非最不重要的是,您可以编写tfs脚本 - 每行都是新的tf.exe命令,但它们都共享服务器连接,因此速度更快: script1.tfs " 重命名foo1 bar1 重命名foo2 bar2
"你调用tf @ script1.tfs(@是至关重要的) 请记住创建首先覆盖所有文件夹的工作区,最简单的方法是从映射到其中的文件夹中调用tf.exe。 祝你好运!
答案 1 :(得分:0)
正如MicahalMa所建议的,我使用了类似的方法,并使用c#在循环中调用重命名。这是我不太优雅的代码。
private static void RenameDirectories()
{
string path = @"E:\Local\Development\"; //Path for parent directory
List<string> directoriesToRename = new List<string>();
string[] directories = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly);
string tfsTool = @"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\TF.exe";
string command = "rename";
var p = new Process();
int i = 0;
foreach (string s in directories)
{
i++;
string param = command + " " + path + "\\" + s + " " + path + "\\" + s.Remove(s.Length - 1);
Console.WriteLine("Running " + i + " of" + directoriesToRename.Count());
Console.WriteLine("Renaming started for " + s);
p.StartInfo = new ProcessStartInfo(tfsTool, param)
{
UseShellExecute = false
};
p.Start();
p.WaitForExit();
Console.WriteLine("Renaming Complete for " + s);
Console.WriteLine("-----------------------------------------------------------");
File.AppendAllText(@"c:\log.txt", s + Environment.NewLine);
}
}