Batch file 如何使用批处理文件将文件移动到相应的文件夹中

Batch file 如何使用批处理文件将文件移动到相应的文件夹中,batch-file,Batch File,我有一个命令,它基本上可以转换: 将pdf文件转换为jpg文件 对于所有JPG文件,它会生成相应的文件夹 它使用tesseract软件将图像文件转换为文本文件 将JPG文件移动到我刚刚创建的相应文件夹中(工作) 将文本文件移动到我刚刚创建的相应文件夹中(不起作用) 有人能告诉我怎么做才能让它像处理图像文件一样将文本文件移动到相应的文件夹中吗?因此,在每个文件夹的最后,它将同时包含图像文件和文本文件。谢谢大家! 我强烈怀疑TesserText非常聪明,将实际转换作为一个单独的过程启动,然后终止。因

我有一个命令,它基本上可以转换:

  • 将pdf文件转换为jpg文件
  • 对于所有JPG文件,它会生成相应的文件夹
  • 它使用tesseract软件将图像文件转换为文本文件
  • 将JPG文件移动到我刚刚创建的相应文件夹中(工作
  • 将文本文件移动到我刚刚创建的相应文件夹中(不起作用)

  • 有人能告诉我怎么做才能让它像处理图像文件一样将文本文件移动到相应的文件夹中吗?因此,在每个文件夹的最后,它将同时包含图像文件和文本文件。谢谢大家!

    我强烈怀疑TesserText非常聪明,将实际转换作为一个单独的过程启动,然后终止。因此,当batch尝试移动.txt文件时,可能无法写入该文件

    就我个人而言,我会试试(航空代码)


    为什么不告诉tesseract首先将文件放在正确的位置,这样就不必再移动它:-)

    此外,您确实应该在文件名周围加引号,以防遇到名称中带有空格的文件

    ...
        tesseract %%i %%~ni.txt
        call :transfer %%~ni
    ...
    ...
    goto :eof
    :transfer
    setlocal
    set count=6
    :tloop
    if exist %1.txt move %1.jpg %1&move %1.txt %1&goto :eof
    set /a count-=1
    :: wait 1 second...
    if %count% gtr 0 ping -n 2 127.0.0.1 >nul &goto tloop
    echo could not find %1.txt after 6 seconds...
    goto :eof
    
    如果出于某种奇怪的原因,tessereact坚持将文件放在当前文件夹中,则更改当前文件夹

    @echo off
    for %%j in (*.pdf) do (
        java -jar pdfbox-app-1.7.1.jar PDFToImage "%%j"
    )
    
    if exist *.jpg (
        for %%i in (*.jpg) do (
            mkdir "%%~ni"
            tesseract "%%i" "%%~ni\%%~ni.txt"
            move "%%i" "%%~ni"
        )
    )
    

    当你说“不行”时,问题是什么?使用一些虚拟文件(不使用
    tesseract
    步骤)尝试批处理文件对我来说很好。hmmmm由于某些原因,它对我不起作用。所以如果你在(*.txt)中为%%i做了移动%%i%%~ni它会为你将每个文本文件移动到相应的名称文件夹中吗?哦。。好的,当我单独执行时,它可以工作,但是由于某种原因,如果我添加附加到原始命令的单独命令,它不会将文本文件移动到文件夹中,只是终止。。。。QQ从技术上讲,我可以制作单独的可执行文件,但我想在一个文件内完成。如果我使用你的脚本时只删除
    teseract
    行,并使用一些虚拟的
    .jpg
    .txt
    文件,它就可以正常工作。下面的Peter Wright已经提出了一个可能的原因,但如果您发布错误消息或解释“不起作用”的实际含义,那么就有可能确定您所关注的确切问题。非常感谢!!!!!!!我怎么没想到那件事。。你的第一个建议非常有效!!
    @echo off
    for %%j in (*.pdf) do (
        java -jar pdfbox-app-1.7.1.jar PDFToImage "%%j"
    )
    
    if exist *.jpg (
        for %%i in (*.jpg) do (
            mkdir "%%~ni"
            tesseract "%%i" "%%~ni\%%~ni.txt"
            move "%%i" "%%~ni"
        )
    )
    
    @echo off
    for %%j in (*.pdf) do (
        java -jar pdfbox-app-1.7.1.jar PDFToImage "%%j"
    )
    
    if exist *.jpg (
        for %%i in (*.jpg) do (
            mkdir "%%~ni"
            pushd "%%~ni"
            tesseract "..\%%i" "%%~ni.txt"
            popd
            move "%%i" "%%~ni"
        )
    )