【问题标题】:How to move files into corresponding folder using Batch files如何使用批处理文件将文件移动到相应的文件夹
【发布时间】:2013-02-23 10:52:25
【问题描述】:
@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.txt
        move %%i %%~ni
        move %%~ni.txt %%~ni
    )
)

所以我有这个基本上可以转换的命令:

  1. 将 pdf 文件转换为 jpg 文件。
  2. 对于所有的 JPG 文件,它会创建相应的文件夹。
  3. 它使用tesseract软件将图像文件转换为文本文件。
  4. 将 JPG 文件移动到我刚刚创建的相应文件夹中(works)。
  5. 将文本文件移动到我刚刚创建的相应文件夹中(不起作用)。

谁能告诉我如何制作它,以便它将文本文件移动到相应的文件夹中,就像我对图像文件所做的那样?所以最后对于每个文件夹,它将包含图像文件和文本文件。谢谢!

【问题讨论】:

  • 当您说“不起作用”时,有什么问题?用一些虚拟文件(没有tesseract 步骤)尝试你的批处理文件对我来说很好。
  • hmmmm 出于某种原因它对我不起作用。因此,如果您在 (*.txt) 中为 %%i 执行移动 %%i %%~ni 是否会为您将每个文本文件移动到相应的名称文件夹中?
  • 哦.. 好的,当我单独执行它时它可以工作,但由于某种原因,如果我添加附加到原始命令的单独命令,它不会将文本文件移动到文件夹中而只是终止。 ... QQ 从技术上讲,我可以制作单独的可执行文件,但我想在一个内完成..
  • 如果我使用您的脚本,只删除了tesseract 行,并使用一些虚拟的.jpg.txt 文件,它工作正常。下面的 Peter Wright 已经提出了一个可能的原因,但如果您发布错误消息或以其他方式解释“不起作用”的实际含义,则可能可以确定您正在查看的确切问题。

标签: batch-file


【解决方案1】:

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

另外,你真的应该在你的文件名两边加上引号,以防你遇到一个文件名中有空格的文件。

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

如果出于某种奇怪的原因, 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"
        pushd "%%~ni"
        tesseract "..\%%i" "%%~ni.txt"
        popd
        move "%%i" "%%~ni"
    )
)

【讨论】:

  • 非常感谢!!!!!!!我怎么没想到……您的第一个建议效果很好!
【解决方案2】:

我强烈怀疑 tesseraxt 非常聪明,将实际转换作为一个单独的过程启动,然后终止。因此,结果将是 .txt 文件在批处理尝试移动时可能不会被写入。

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

...
    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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多