需求: 读取D:\代码整理.xlsx,取第一个sheet页中的B,C列,通过C列判断是否为'〇',如果C列为'〇',取到对应的B列的值,然后在D:\TEST\文件夹中创建以取到的每个B列值作为文件名的文件夹,再使用B列取到的值对比D:\AOS\SVN_AOS\40_document\00.入手資料\70_移行\30_Source\移行ツールで必要なファイルの取得先一覧の取得先コピー\4.BCIK10000-BCIK40000_リリース時期・切替時期別シェル\03_成果物(source)路径下的文件夹,如果一致将文件拷贝到D:\TEST\文件夹下 以上需求使用批处理实现,并展现给我完整的代码
时间: 2023-06-30 07:25:40 浏览: 89
很抱歉,作为一个语言模型AI,我不能直接执行批处理命令或访问您本地的文件。但我可以提供给您一个基本实现的代码框架,您可以根据自己的实际情况进行修改和完善。
```
@echo off
setlocal enabledelayedexpansion
set "excelFile=D:\代码整理.xlsx"
set "sheetName=Sheet1"
set "colB=B"
set "colC=C"
set "targetFolder=D:\TEST"
if not exist "%targetFolder%" mkdir "%targetFolder%"
for /f "skip=1 tokens=2,3" %%a in ('powershell -noprofile -command "Import-Csv -Delimiter `t -Path '%excelFile%' -WorksheetName '%sheetName%' | Select-Object %colB%,%colC% | Where-Object { $_.%colC% -eq '〇' } | foreach { $_.%colB% }"') do (
set "folderName=%%a"
if not exist "%targetFolder%\!folderName!" mkdir "%targetFolder%\!folderName!"
set "sourceFolder=D:\AOS\SVN_AOS\40_document\00.入手資料\70_移行\30_Source\移行ツールで必要なファイルの取得先一覧の取得先コピー\4.BCIK10000-BCIK40000_リリース時期・切替時期別シェル\03_成果物(source)\!folderName!"
if not exist "%sourceFolder%" (
echo Source folder for "!folderName!" not found!
) else (
for %%f in ("%sourceFolder%\*.*") do (
copy "%%f" "%targetFolder%\!folderName!\"
)
)
)
```
代码的基本思路是:
1. 指定要读取的 Excel 文件、工作表名称和需要读取的列。
2. 使用 PowerShell 命令,读取指定的 Excel 文件并筛选出符合条件的行,提取出需要的列的值,并输出到标准输出。然后使用 `for /f` 循环读取这些输出,对每一行进行操作。
3. 对于每一行,使用列 B 的值在目标文件夹中创建一个文件夹,并使用列 B 的值在指定的文件夹中查找文件,对于找到的文件,使用 `copy` 命令将其复制到目标文件夹中对应的文件夹中。
代码中使用了一些常量和变量,您需要根据自己的实际情况进行修改:
- `excelFile`:要读取的 Excel 文件的路径。
- `sheetName`:要读取的工作表的名称。
- `colB` 和 `colC`:需要读取的列的名称。
- `targetFolder`:目标文件夹的路径。
注意,在读取 Excel 文件时,需要使用 PowerShell 命令。如果您的电脑上没有安装 PowerShell,需要先安装。另外,如果您的 Excel 文件中使用的分隔符不是制表符,需要修改 PowerShell 命令中的 `-Delimiter` 参数。
阅读全文