Batch file 批处理等待Windows 10复制完成

Batch file 批处理等待Windows 10复制完成,batch-file,Batch File,我已经为工作编写了一个批处理程序,以某种方式重命名文件。(“测试”->“年-月-日测试人缩写”) 为了让工作日变得更轻松,我想让整个事情对用户来说尽可能简单 因此,我的想法是,用户只需使用ctrl+x将文件复制到剪贴板,然后通过任务栏激活快捷方式。 现在,将打开一个普通文件夹,并通过启动VBS脚本(ctrl+V)将文件插入该文件夹 现在我有一个程序,我无法确定windows需要将文件移动到目录中多长时间,因为它不是通过批处理“复制”执行的,而是通过ctrl+X和ctrl+V执行的 我试图从exp

我已经为工作编写了一个批处理程序,以某种方式重命名文件。(“测试”->“年-月-日测试人缩写”)

为了让工作日变得更轻松,我想让整个事情对用户来说尽可能简单

因此,我的想法是,用户只需使用ctrl+x将文件复制到剪贴板,然后通过任务栏激活快捷方式。 现在,将打开一个普通文件夹,并通过启动VBS脚本(ctrl+V)将文件插入该文件夹

现在我有一个程序,我无法确定windows需要将文件移动到目录中多长时间,因为它不是通过批处理“复制”执行的,而是通过ctrl+X和ctrl+V执行的

我试图从explorer进程中获取信息,但没有成功

我甚至试图从CPU使用情况中获取信息,但这也是非常困难的

目标是简单地将文件从未知目录复制到可以重命名的目录

我附上我的小脚本作为解释

我已经尝试通过计算文件来解决这个问题。但是,传输单个文件可能需要超过1秒的时间,这使得sytsem无效

@Echo Off >nul
setlocal EnableDelayedExpansion >nul
chcp 65001 >nul



set Kuerzel=fb

del /q "Temp\"

start "" "Temp"
timeout /t 1
start "" "data\strg+v.vbs"



::wait until all files are there
:loobt

    set dateien1=0
    for /F %%i in ('dir Temp\* /B /A-d') do set /A dateien1=dateien1+1

    timeout /t 1

    set dateien2=0
    for /F %%i in ('dir Temp\* /B /A-d') do set /A dateien2=dateien2+1

if not %dateien1% == %dateien2% goto loobt
if %dateien1% == 0 goto loobt



::rename

for /r "Temp\" %%i in (*.*) do (
    set "neu=%%~ni"
    ren "%%i" "%date:~6%-%date:~3,2%-%date:~0,2%-!neu:_=-!-%Kuerzel%%%~xi"
)

timeout /t 2

start "" "data\strg+a.vbs"
start "" "data\strg+c.vbs"
timeout /t 1
start "" "data\alt+F4.vbs"

我为语法错误或单词混乱道歉。我已经尽了最大努力,用英语编写了一个可理解的文本。

不要使用
START
命令来运行
VBS
。如果您能够解释更改为代码页65001的目的,这将非常有用,因为您似乎没有使用几乎所有标准默认代码页中都没有的任何字符。如果我们了解目的,最好了解
strg+v.vbs
strg+a.vbs
strg+c.vbs
、以及
alt+F4.vbs
的内容,这可能也会很有好处。我假设出于某种莫名其妙的原因,您决定创建单独的vbscript文件,通过
sendkeys
,执行GUI击键,
[CTRL]
+
[V]
将未知数据从剪贴板粘贴到通过
start”““Temp”
打开的“资源管理器”窗口中;然后在以后的
[CTRL]
+
[A]
[CTRL]
+
[C]
,和
[CTRL]
+
[F4]
,依次选择全部,复制,然后关闭当前打开的特定“资源管理器”窗口。因此,我们需要的是解释您为什么试图通过GUI执行此操作,以及根据您的代码意图,到底发生了什么或没有发生什么。@Compo我更改了每个程序中的代码页。这样我就不用担心像“üäö”这样的字母了。我知道这会导致问题,但到目前为止,我还没有遇到任何问题。但如果是那样的话,我可以把它从代码中删掉。下面是我的一个VBS脚本:```Set WshShell=WScript.CreateObject(“WScript.Shell”)WshShell.AppActivate“notepad”WshShell.SendKeys(“^c”)```这些脚本都是以相同的方式构建的。我知道这不是最好或最有效的解决方案。然而,这只是为了testing@Florian,您在评论中特别使用的字母
u
a
o
不是Unicode或UTF-8字符,它们是多个代码页中可用的拉丁字符,我建议您使用
1252