Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.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
如何在确认提示后删除SVN目录?_Svn_Powershell_Scripting_Command - Fatal编程技术网

如何在确认提示后删除SVN目录?

如何在确认提示后删除SVN目录?,svn,powershell,scripting,command,Svn,Powershell,Scripting,Command,我希望能够从目录中删除.SVN文件夹 我发现下面的注册表黑客可以让你做到这一点 然而,我不喜欢这个解决方案的一点是,它根本没有给出任何确认。我想它做什么,这个命令脚本做,但得到一个确认提示第一 有什么想法吗 编辑 我的理解是SVN导出不会复制未版本的文件。这就是为什么我要这个 Seth您可以使用Subversion命令行并运行svn export如果您使用的是TortoiseSVN,您可以使用。删除隐藏在该脚本中的RD命令上的/q选项 这将导致rd(删除目录)的每次调用都会询问 但同时,我想问

我希望能够从目录中删除.SVN文件夹

我发现下面的注册表黑客可以让你做到这一点

然而,我不喜欢这个解决方案的一点是,它根本没有给出任何确认。我想它做什么,这个命令脚本做,但得到一个确认提示第一

有什么想法吗

编辑 我的理解是SVN导出不会复制未版本的文件。这就是为什么我要这个


Seth

您可以使用Subversion命令行并运行
svn export
如果您使用的是TortoiseSVN,您可以使用。

删除隐藏在该脚本中的RD命令上的/q选项

这将导致rd(删除目录)的每次调用都会询问


但同时,我想问一下,为什么不使用svn导出选项。

如果您使用Perl,这里有一个脚本,用于执行此操作,并从VS中删除其他dir类型(handy for/bin等):

#/usr/local/bin/perl-w
#-------------------------------------------------------------------------------
#removedirs.pl-递归地从给定根文件夹中删除目录
#作者:尼克·戈奇
#日期:07-13-2009
#-------------------------------------------------------------------------------
严格使用;
使用警告;
使用File::Path;
#-------------------------------------------------------------------------------
#用户设置变量
#-------------------------------------------------------------------------------
my$basepath='C:\\Path\\to\\RootDir\\';
#-------------------------------------------------------------------------------
#加工
#-------------------------------------------------------------------------------
#提示确认
syswrite(STDOUT,“确认删除目录吗?\n按“Y”确认。\n”);
$confirm=;
如果($confirm=~/^[Yy]$/)
{
#在此处添加行以删除其他目录。。。
RemoveDir($basepath,“.svn”);
系统写入(标准输出,“完成”。\n按关闭。\n”);
}
;
亚远程
{
my($directory,$dirtodelete)=@;
如果(-e$directory.'\\'.$dirtodelete.'\\')
{
rmtree($directory.$dirtodelete.\\');
syswrite(STDOUT,“已删除:“.$directory.$dirtodelete.\\”。“\n”);
}
opendir(DIR,$directory);
我的@subdirlist;
while(my$subdir=readdir(DIR))
{
如果($subdir-ne'.')&&($subdir-ne'.')&&(-d$directory.$subdir))
{
推送(@subdirlist,$directory.$subdir.\\);
}
}
closedir(DIR);
foreach my$subdir(@subdirlist){RemoveDir($subdir$dirtodelete);}
}

如果将脚本内容放入cmd文件,然后设置注册表,使其指向此cmd文件,会怎么样?然后您可以添加各种操作,如中的示例所示。我希望这有助于您创建解决方案。

尝试对脚本进行此修改。它在运行目录删除之前添加一个提示:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && choice /m "Remove SVN folder" && if ERRORLEVEL 2 goto done && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" && :done \""

请尝试使用以下方法获取注册表值的Powershell命令:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe-命令“&{if((读取主机'确认删除.SVN文件夹。按Y或N')-eq'Y'){Get ChildItem'%1'-r*.SVN |?{$..psContainer}删除项-r-force-verbose-ea 0;读取主机'按enter退出'}”


如果不想看到文件被删除,请删除-verbose。

Larry,回答得很好。我确实用乌龟。我知道svn导出命令。我的理解是SVN导出不会复制未版本化的文件。这就是为什么我要问(并且应该在问题中说得更清楚)。也就是说我不知道乌龟的特征。这会使未版本的文件保持完整吗?我没有必要这样做,所以我不知道。一种方法是使用测试工作副本在您的环境中进行测试。如果选择“全部导出”,它将包括未版本化的文件。这不起作用。没有提示就跑了。不过我喜欢这个主意。这正是我想要的。语法似乎高度依赖于您正在运行的Windows版本,因此我放弃了…:)
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && choice /m "Remove SVN folder" && if ERRORLEVEL 2 goto done && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" && :done \""