Batch file 命令提示符脚本

Batch file 命令提示符脚本,batch-file,automation,command-prompt,Batch File,Automation,Command Prompt,这很难解释,我会尽力的 我在命令提示符下使用shell脚本测试执行器来自动化回归测试。然而,有一件事我被卡住了 基本上,我必须复制这个动态创建的文件夹在一个位置到另一个文件夹后,自动脚本是在CMD通过脚本完成 :: create an achieve directory @SET ACHIEVE_DIR=C:\Test Result\LOG_Files mkdir "%ACHIEVE_DIR%" xcopy /y /s /e "%TEST_SOURCE_DIR%"\*.* "%ACHIEVE_D

这很难解释,我会尽力的

我在命令提示符下使用shell脚本测试执行器来自动化回归测试。然而,有一件事我被卡住了

基本上,我必须复制这个动态创建的文件夹在一个位置到另一个文件夹后,自动脚本是在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-\u 2014-06-30 15\u 48\u 01\u 因此,如果进入C:\temp,我会找到一个名为TEST RUN-_2014-06-30 15_48_01_的文件夹以及其他文件夹。但我只想将此动态文件夹复制到Test Result\LOG\u文件中

我们得到的是,开始字符串将始终是测试运行-但结束字符串将根据到第二个的时间进行交换,但我们不能通过它,因为它是开始测试结果的第二个

我发现如果我在命令提示符下,我键入cd TEST RU并点击tab,它会为我完成cd测试运行-_2014-06-30 15_48_01_u有没有办法编写这个tab hit或其他的脚本


谢谢

此批处理文件应执行以下任务:

@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个命令所用参数的详细信息

或在命令提示符窗口中执行命令

目录/? 对于/? xcopy/?
依次获取窗口中这3个命令输出的简短帮助。

这应在批处理文件中起作用,以隔离文件夹: 如果有许多文件夹以测试运行开始,请告诉我们

@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   
)

这与硒有什么关系?您使用什么语言编写此脚本?你想完成什么?这是我的回归测试。这就是为什么我把硒作为标签。这是命令提示符语言,即mkdir是在MS DOS等平台上使用的。如果你坚持使用.bat脚本编写,这将是非常困难的;请参阅for/f命令以开始。如果您切换到真正的脚本语言,例如,那么这应该很简单。快速提问现在我复制了这个,但它复制了那个文件夹中的所有内容,但我只需要那个文件夹中的内容\in\\TEST\n所以有没有办法将这个部分%%a**更改为%%a\in*\TEST一个特别的注意是,里面只有一个文件夹,所以有办法进入那个位置吗?将%%a\*.*更改为%%a\test\*.*如果我理解正确的话。如果您也只需要单个文件夹,而不需要子目录,那么请删除/s和/e开关。不,不,我的意思是-折叠系统在测试运行中动态创建此子文件夹-*所以它将是测试运行-*\In\***\test`所以我需要进入测试运行-*\In***\test`并获取那里的所有内容。。文件夹和文件,但有一点要注意的是,在我们进入测试运行之后,每个级别只有一个文件夹-*。。请注意,\***\TEST中的每个文件夹都只有一个文件夹,因此本质上应该是这样的:`C:\Temp\TEST RUN-\\u 2014-06-30 15\u 48\u 01\u\In\19a2a552-88c3-4633-b7a8-8ced92819359\TEST`从中获取所有文件有一个名为TEST的最终文件夹?是的,我想要测试文件夹中的所有文件。你的代码是什么?它复制了“\In\19a2a552-88c3-4633-b7a8-8ced92819359\TEST”中的所有内容,但如果你能在dept中多做一点,那就太好了!