尝试使用Windows 7计算机上的批处理文件自动化简单的任务和过程控制

时间:2019-04-02 18:30:27

标签: windows batch-file

我正在尝试在Windows 7计算机上执行以下基本任务。我尝试执行的任务按以下顺序列出。

  1. 要求用户输入2个数字。
  2. 搜索并找到文件夹是否存在。
  3. 如果文件夹不存在,请创建它。
  4. 在网络驱动器中搜索Excel文件。
  5. 将该Excel文件复制到新创建的文件夹中。
  6. 在本地打开该excel文件进​​行编辑。

我的批处理文件代码包含在这里。可以,但是用户会在目录中获取文件列表,然后选择要复制的文件。我现在遇到的问题是所列文件不正确也不完整,仅显示部分目录位置,而不显示带有文件名的整个位置。我想在目录中找到所有的.xls和.xlsx文件。 目录和文件名的更改不遵循命名约定的标准,这使搜索正确的文件变得困难。

这是我整理的hack作业,也是我第一次尝试编写批处理文件,因此人们的任何帮助,技巧或更改都将极大地帮助我。我已经知道这不是好的代码或过程,因此无需花时间告诉我。如果我知道自己在做什么,我就不会在这里寻求这样的基本帮助。

最终,我希望有一个独立的程序来使用基本的GUI来执行此操作,但是对Python或其他语言的了解不足以完成项目。

删除了前几行...

:FILE_COPY
setlocal enabledelayedexpansion
set count=0

:
:: Read in files
echo Please wait. Searching for BOM files.
for /f %%x in ('dir /s /b %filePath%\*.xls') do (
    set /a count=count+1
    set choice[!count!]=%%x
    for %%y in (!count!) do set "choice[%%y]=!choice[%%y]:%cd%\=!"
        )

echo The following files were found for PCA-%pcaNum%. 
echo Enter number of file to copy.
echo.

:
:: Print list of files
for /l %%x in (1,1,!count!) do (
     echo  %%x] !choice[%%x]!
)
echo.

:
:: Retrieve User input
set /p select=File Number: 
echo.

:
:: Print out selected filename
xcopy /v !choice[%select%]! C:\Users\dvanmeter\Desktop\CXF\%jobNum%
start !choice[%select%]!
pause
GOTO:END

:END
exit

我希望文件列表显示:

  1. filename1.xlsx
  2. filename2.xlsx

代替下面的列表。

  1. J:...... \ 56480 \
  2. J:...... \ 56480 \ 09763 \
  3. J:...... \ 56480 \ Files \
  4. J:...... \ 56480 \ Files \
  5. J:...... \ 56480 \ Sales \ filename.xlsx

所有这些选项仅是目录,而不是我要查找的文件。只有最后一个是文件,但不是我要查找的文件,因为这里的目录中有更多Excel文件,但未列出。


更新:

我现在发现,当打印出文件列表时,不会存储带有文件名的整个目录。运行代码的打印列表部分时,它会缩短路径并切断文件名。因此,当我选择要复制的文件时出现错误并说“找不到文件”

是什么导致文件位置列表被缩短?这是固有的控制台限制吗?我知道我可以获得使用文本文件显示的完整路径和文件名,但不确定如何在此处实现。

1 个答案:

答案 0 :(得分:0)

  

对于/ f“ delims =” %% x in('dir / s / b%filePath%*。xls'))--JosefZ

此答案和解决方案发布在评论中,而不是答案中,因此我无法将其设置为“已回答”。 我的问题已修复,我的批处理文件正在按我需要的方式工作。

感谢您的帮助。