Java xcopy不是';我不能在批处理文件中工作,我不知道为什么?
第一次海报在这里!我通常潜伏着寻找答案,但鉴于我一直对此感到头痛,我真的希望为我的老板完成这件事,我想直接问一下,看看是否有人能发现我的剧本有什么问题Java xcopy不是';我不能在批处理文件中工作,我不知道为什么?,java,windows,batch-file,cmd,xcopy,Java,Windows,Batch File,Cmd,Xcopy,第一次海报在这里!我通常潜伏着寻找答案,但鉴于我一直对此感到头痛,我真的希望为我的老板完成这件事,我想直接问一下,看看是否有人能发现我的剧本有什么问题 @echo off for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value')do set "dt=%%a" set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4
@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value')do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
set "new_name=PayCase_%fullstamp%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
move /-y "E:\RFT workspace folder\PayCase_Project_Playground_logs\PayCase_ScriptLog" "%~dp0\Log Archive\%new_name%"
xcopy /e "%~dp0\Log Archive\%new_name%" "%~dp0\Log Archive\sendFolder"
pause
EXIT
脚本的第一部分只是获取今天的日期和时间,并将其设置为一个名为“new_name”的变量(这不是我的代码,是从某处获得的,我忘了在哪里)。后一部分,将文件夹的内容从一个位置移动到另一个位置,然后假设将这些内容复制到驱动器中的另一个位置
有人能帮我弄清楚为什么我的代码没有将内容复制到我的sendFolder吗?我唯一看到的是,您没有使用所有的开关。使用开关
/s
进行尝试。第二,也是最重要的一点,您使用的%~dp0
错误
在txt文件中键入此项,并将其另存为批处理文件
Echo %~dp0
Pause
运行它,您将在最后找到一个\
,例如,您将有一个类似于C:\where\bat\is\
的路径,在最后已经有一个\
您键入了此“%~dp0\Log Archive\%new\u name%”
,这将导致“C:\where\bat\is\\Log Archive\%new\u name%”
看到了吗?一个小小的错误可能会把整个事情弄错。因此,请尝试添加/s开关并像这样编辑代码
xcopy/s/e“%~dp0Log Archive\%new\u name%”%~dp0Log Archive\sendFolder”
也请关注@JosefZ评论
问候,欢迎来到SO。您的脚本是否显示一些错误消息,例如访问被拒绝。移动了0个目录或类似目录?请回答您的问题并添加更多详细信息(请删除
java
标记)。顺便说一句,move
命令不会在不同的磁盘驱动器(卷)之间移动目录。@JosefZ很抱歉花了这么长时间回复,我参加了一个不会结束的会议。但是脚本现在开始无缘无故地工作了,我什么也没改变,奇怪吧?还感谢大家为move命令提供指导,我通过复制内容并删除源文件解决了这个问题。/e
开关意味着xcopy中的/s
开关,包括它在内,它不会以任何方式更改命令。他的问题是move命令没有移动文件开始with@foxidrive我告诉他,无论它是否移动它,他都不会得到正确的结果,除非他移除多余的\。因此,无论我们是否解决了他的问题,他仍然会得到一个错误,直到他解决了这个问题。我已经知道他的问题了。Windows在大多数情况下都能容忍\\。试一试。无意冒犯,但你给出的答案是\\行不通,这是必要的。这两件事都不是真的。其他人会因为这个原因投票否决你的答案,你的代表将被罢免。@foxidrive Ok Windows可以接受/