String 批处理脚本上的文件移动和字符串操作

String 批处理脚本上的文件移动和字符串操作,string,batch-file,batch-processing,String,Batch File,Batch Processing,对不起,我的问题不清楚。我尝试了问题的一部分,但无法继续 文件夹结构 Home A A1 - stdinxx.csv (xx - 2 digit number) A2 - sapvdyy.csv (yy - 2 digit number) A3 . . . AN B B1 - stdin.csv B2 - sapvd.csv B3 . . . BN 蝙蝠 mybat.bat应该在主文件夹中。A和B是

对不起,我的问题不清楚。我尝试了问题的一部分,但无法继续

文件夹结构

Home
 A A1 - stdinxx.csv  (xx - 2 digit number)
   A2 - sapvdyy.csv  (yy - 2 digit number)
   A3
    .
    .
    .
   AN
B  B1 - stdin.csv
   B2 - sapvd.csv 
   B3
    .
    .
    .
   BN 
蝙蝠

mybat.bat应该在主文件夹中。A和B是子文件夹。A和B中有子文件夹(不是固定数量,但子文件夹数量与A和B上的子文件夹数量匹配)

我做了一个for循环,得到Home子文件夹中的所有文件名(此处发布)

如何仅针对*.csv的文件夹和子文件夹执行for循环

复制时如何删除最后2位数字(以为%%%I:~-2%可以工作…不工作)

如何修剪文件路径以获得A1或A2,以便将文件从A1复制到B1等等

任何方向或想法都能救我的命。Plz

我在想

搜索文件夹“a”及其子文件夹中的*.csv文件

获取文件名

精简文件名,使2位数字消失(文件将始终包含2位数字值)

从文件所在的文件路径(A1中的1)获取文件夹名称

将修剪过的文件复制到B\B(1)\

请帮忙。求你了

@ECHO关闭
SETLOCAL ENABLEDELAYEDEXPANSION
设置“sourcedir=U:\sourcedir\t w o”
对于/f“delims=”%%a IN(
“xcopy/l/s”%sourcedir%\A\*.csv“
)是否存在“%%a”(
设置“destfilename=%%~na”
对于/f“delims=“%%s IN(“%%~dpa.”)执行ECHO f | XCOPY“%%a”“%sourcedir%\B\%%~nxs\!destfilename:~0,-2!.csv”>nul
)
后藤:EOF
您需要更改
sourcedir
的设置以适应您的环境

我认为您希望将
A
下的目录结构复制为
B
下的相同结构,只是文件名删除了最后两个字符

你的例子似乎有些做作。最好张贴一个具有代表性的真实结构。上述代码将在
B
下生成名为
A*
的子目录,如果需要,可以更改这些子目录


%%x:~m,n
语法不受支持,这就是它不起作用的原因。您需要将这些值放入一个普通的环境变量中,并使用所演示的
delayedexpansion
方法。如果要操纵目标子目录名称,请使用
%%~nxs

中的子目录名称,跟随弹跳球,编辑您的问题并尝试格式化源文件。使用预览查看它是否可读。
For /f "delims=" %%a in ('Dir /A:-D /b /s *.csv 2^>nul') do If exist "%%a" ( copy %%a B\subfolder_based_upon_file_input\%%~ni.csv)