Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Windows 如何仅从SVN获取分支名称,并通过拆分URL将其打印到变量中?_Windows_Batch File_Svn_Cmd - Fatal编程技术网

Windows 如何仅从SVN获取分支名称,并通过拆分URL将其打印到变量中?

Windows 如何仅从SVN获取分支名称,并通过拆分URL将其打印到变量中?,windows,batch-file,svn,cmd,Windows,Batch File,Svn,Cmd,我试图在命令提示符中仅获取SVN分支的名称,并将其设置为变量。 我能够成功地获取URL,但仅为分支名称设置值时遇到问题。 不幸的是,%分支%最终为空 如果还有其他更简单的方法也很好。 警告:默认情况下,Windows 7上未安装任何工具(SVN除外) FOR /F "tokens=* usebackq" %%F IN (`svn info --show-item url`) DO SET fullUrl=%%F ECHO %fullUrl% FOR /F "delims=/" %%F IN (

我试图在命令提示符中仅获取SVN分支的名称,并将其设置为变量。
我能够成功地获取URL,但仅为分支名称设置值时遇到问题。
不幸的是,%分支%最终为空

如果还有其他更简单的方法也很好。
警告:默认情况下,Windows 7上未安装任何工具(SVN除外)

FOR /F "tokens=* usebackq" %%F IN (`svn info --show-item url`) DO SET fullUrl=%%F
ECHO %fullUrl%

FOR /F "delims=/" %%F IN (%fullUrl%) DO SET branch=%%F
ECHO %branch%
命令窗口输出:

C:\workspaces\Release_10_1>FOR /F "tokens=* usebackq" %F IN (`svn info --show-item url`) DO SET fullUrl=%F

C:\workspaces\Release_10_1>SET fullUrl=https://svn/path/branches/releases/Release_10_1

C:\workspaces\Release_10_1>ECHO https://svn/path/branches/releases/Release_10_1
https://svn/path/branches/releases/Release_10_1

C:\workspaces\Release_10_1>FOR /F "delims=/" %F IN (https://svn/path/branches/releases/Release_10_1) DO SET branch=%F
The system cannot find the file https://svn/path/branches/releases/Release_10_1.

C:\workspaces\Release_10_1>ECHO 
ECHO is on.
预期成果: fullUrl=
https://svn/path/branches/releases/Release_10_1

分支=
Release\u 10\u 1

实际结果: fullUrl=
https://svn/path/branches/releases/Release_10_1

分支=`

FOR %%F IN ("%fullUrl%") DO SET "branch=%%~nxF"
ECHO %branch%
%%F
中选择“文件名”的
名称
扩展名
,将在最后的
/
之后生成该部分

set
中插入引号,以确保在指定的值中省略尾随空格

%%F
中选择“文件名”的
名称
扩展名
,将在最后的
/
之后生成该部分


set
中插入引号,以确保在指定的值中省略尾随空格。

Magoo有更好的答案

这些年来,我一直在使用这段代码,因为我假设文件系统无法理解带有正斜杠的路径。当您不知道有多少分隔字段时,这将用于获取最后一个分隔字段

@echo off

SET fullUrl=https://svn/path/branches/releases/Release_10_1
set turl=%fullUrl%

:branch
FOR /F "tokens=1* delims=/" %%G IN ("%tUrl%") DO (
    SET branch=%%G
    SET tUrl=%%H
)
IF NOT "%tUrl%"=="" GOTO branch
echo %fullUrl%
ECHO %branch%
pause

马古有更好的答案

这些年来,我一直在使用这段代码,因为我假设文件系统无法理解带有正斜杠的路径。当您不知道有多少分隔字段时,这将用于获取最后一个分隔字段

@echo off

SET fullUrl=https://svn/path/branches/releases/Release_10_1
set turl=%fullUrl%

:branch
FOR /F "tokens=1* delims=/" %%G IN ("%tUrl%") DO (
    SET branch=%%G
    SET tUrl=%%H
)
IF NOT "%tUrl%"=="" GOTO branch
echo %fullUrl%
ECHO %branch%
pause

以下是一种不带
的方法,用于

@echo关闭
setlocal EnableExtensions DisableDelayedExpansion
rem//在此处定义常量:
设置“完整URL”=https://svn/path/branches/releases/Release_10_1"
rem//预设临时变量:
设置“tempURL=%fullURL%”
:循环
rem//从字符串开始到第一个`/`拆分所有内容:
如果定义了tempURL,则设置“分支=%tempURL://=%”
rem//拆分字符串等于前一个字符串,因此未找到“/”,因此找到分支:
如果不是“%branch%”,则为“%tempURL%”(
设置“tempURL=%branch%”
转到:循环
)
rem//返回找到的分支,即最后一个“/”之后的所有内容:
回音(%branch%)
端部
退出/B

以下是一种不使用
的方法:

@echo关闭
setlocal EnableExtensions DisableDelayedExpansion
rem//在此处定义常量:
设置“完整URL”=https://svn/path/branches/releases/Release_10_1"
rem//预设临时变量:
设置“tempURL=%fullURL%”
:循环
rem//从字符串开始到第一个`/`拆分所有内容:
如果定义了tempURL,则设置“分支=%tempURL://=%”
rem//拆分字符串等于前一个字符串,因此未找到“/”,因此找到分支:
如果不是“%branch%”,则为“%tempURL%”(
设置“tempURL=%branch%”
转到:循环
)
rem//返回找到的分支,即最后一个“/”之后的所有内容:
回音(%branch%)
端部
退出/B

如果您知道它将始终是第6个分隔字段,那么您可以在FOR命令中使用tokens选项。此外,在FOR命令中,将fullurl变量用双引号括起来。99%的时间它将位于特定位置,但我也必须注意这1%。如果您知道它将始终是第6个分隔字段,那么您可以在FOR命令中使用tokens选项。另外,在FOR命令中,将fullurl变量用双引号引起来。99%的时间它都会在特定的位置,但还有1%的时间我必须处理。哇。我认为这对转发的斜杠不起作用。@Squashman:我只是事后才想到。首先,我使用了
%fullurl:/=\%
(操作:将
fullurl
中的每个
/
替换为“`:”)这正是我所需要的。谢谢!不过我有一个问题。“branch=%~nxF”的双引号是什么对于?@scrascydev:
=
后一行的字符串被分配给变量。某些编辑器保留尾随空格(有时您希望它们保留尾随空格)如果行上有尾随空格,则这些空格将包含在指定的值中。以指定的方式使用引号将确保不包含这些尾随空格。由于空格很难看到,特别是在行的末尾,因此使用常规语法可能会在t栏杆空格的问题是第一次遇到的。谢谢,这和我想的差不多,我只是习惯于只看到双引号中的值。这会允许一个以w/和/或包含空格字符开头的变量吗?哇。我不认为这会对转发的斜杠起作用。@Squashman:我只是事后才想到的。首先,我使用了
%fullurl:/=\%
(操作:将
fullurl
中的每个
/
替换为“`”):这正是我所需要的。谢谢不过,我有一个问题。“branch=%%~nxF”周围的双引号是什么?@scassydev:将
=
赋值给变量后的行上的字符串。有些编辑器保留尾随空格(有时您希望保留),如果行上有尾随空格,则这些将包含在指定的值中。以指定的方式使用引号将确保不包括这些尾随空格。因为空格很难看到,特别是在行尾,所以当第一次遇到尾随空格的问题时,使用传统语法可能会让人挠头。谢谢,这正是我所想的,我习惯于只看到双引号中的值。这会允许一个以w/和/或包含空格字符开头的变量吗?
%%H
在哪里