这很难解释,我会尽我所能。
我在命令提示符下使用shell脚本(Test Executor)来自动化我们的回归测试。但是,我坚持一件事。
基本上我必须在自动脚本完成后将这个动态创建的文件夹复制到另一个文件夹中(在CMD中通过脚本编写)
:: create an achieve directory
@SET ACHIEVE_DIR=C:\Test Result\LOG_Files
mkdir "%ACHIEVE_DIR%"
xcopy /y /s /e "%TEST_SOURCE_DIR%"\*.* "%ACHIEVE_DIR%"
这将复制TEST_SOURCE_DIR中的所有文件,但我只希望这个动态创建的文件夹根据日期戳更改(但是这个日期戳是按秒计算的 - 所以我不能将其用作变量)。
例如:在我运行测试后,它将在C:\ temp \下创建一个文件夹,名为" TEST RUN - _2014-06-30 15_48_01 _" 因此,如果进入C:\ temp我将找到一个名为" TEST RUN - _2014-06-30 15_48_01 _"的文件夹。以及其他文件夹。但我只想将此动态文件夹复制到Test Result \ LOG_Files
我们得到的是,起始字符串将始终为" TEST RUN - "但是结束字符串将根据到第二个字符串的时间进行交换(但是我们不能这样做,因为它是起始测试结果的第二个)。
我发现我是否在命令提示符下并输入" cd TEST RU"并点击标签它将为我完成它" cd TEST RUN - _2014-06-30 15_48_01 _"有没有办法编写此标签命中或其他内容?
谢谢!
答案 0 :(得分:0)
此批处理文件应该完成以下任务:
@echo off
rem Find the directory starting with "TEST RUN -" created last in C:\Temp.
set ACHIEVE_DIR=C:\Test Result\LOG_Files
for /F "usebackq delims=" %%D in ( `dir "C:\Temp\TEST RUN -*" /AD /B /O-D /TC` ) do (
set TEST_SOURCE_DIR=%%D
goto CopyDir
)
echo No directory starting with "TEST RUN -" found in C:\Temp.
pause
exit /b
:CopyDir
rem Copy all files and subdirectories from last test run to achieve
rem directory whereby xcopy automatically creates the achieve directory.
xcopy /E /I /Q /S /Y "%TEST_SOURCE_DIR%" "%ACHIEVE_DIR%"
set ACHIEVE_DIR=
set TEST_SOURCE_DIR=
阅读Microsoft网页
有关这3个命令的已使用参数的详细信息。
或者在命令提示符窗口中执行命令
dir /?
for /?
xcopy /?
一个接一个地获得窗口中输出的3个命令的较短帮助。
答案 1 :(得分:0)
这应该在批处理文件中用于隔离文件夹:
如果有许多以test run -
开头的文件夹,请告诉我们。
@echo off
SET "ACHIEVE_DIR=C:\Test Result\LOG_Files"
cd /d "c:\temp"
for /d %%a in ("test run -*") do xcopy "%%a\*.*" "%ACHIEVE_DIR%\" /s/h/e/k/f/c
此代码查找评论中讨论的测试文件夹:
@echo off
SET "ACHIEVE_DIR=C:\Test Result\LOG_Files"
cd /d "c:\temp"
for /d %%a in ("test run -*") do (
pushd "%%a"
for /d /r %%b in ("test*") do (
xcopy "%%b\*.*" "%ACHIEVE_DIR%\" /s/h/e/k/f/c
)
popd
)