本文介绍了一批基于文件名的一部分创建文件夹和文件移动到该文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我有一个文件夹中160万(!)的PDF文件。这些文件都被命名为类似于这样: LAST_FIRST_7-24-1936诊断 - 地形11-18-10_1.pdfLAST_FIRST_7-24-1936眼镜RX 6-1-11_3.pdf 我需要创建基于该文件的第一部分的一个文件夹,并然后移动该文件和与文件名相同的第一部分到该文件夹的所有其他文件。在这种情况下,该文件夹将被命名为LAST_FIRST_7-24-1936。该文件夹将总是被命名为相同的文件,直到空间的第一部分我想创建批处理文件,将做到这一点。随着我的基本的编程知识,我想出了这个逻辑过程这样做的: 1在第一个文件,并将其命名为VAR12 VAR1空间后删除一切,并将它命名VAR23创建一个文件夹命名为VAR24将文件VAR1到该文件夹VAR25如果有更多文件转到1号线,否则结束 我不知道正确的语法是什么这一点。我发现这个链接Need一个脚本来基于文件名创建文件夹和自动移动文件我做了基于该链接的此批 pushd将D:\\ DATA \\ PDF文件用药指导为%% f由于(* .PDF)做( 2 - ; NUL MD%%〜nF的 > NUL移动/ Y%%〜nF的*。*,%%〜nF的)POPD 但是,这并不让我从刚才的文件名的一部分创建的文件夹名称。如果我可以计算的那部分,我认为这是可行的。我知道我需要为文件夹名称创建变量,但我不知道如何编辑的文件名可变空间后删除所有内容。任何帮助将是AP preciated。我不反对,只要其他人,因为它本身的工作在Windows Server 2008 R2在PowerShell中什么这样做。解决方案 @ECHO OFFSETLOCALSETsourcedir = C:\\ sourcedirPUSHD%sourcedir%FOR / F令牌= 1 *%%一个IN( '目录/ B / A-D* _ * _ * - * - * * *。' )DO( ECHO MD %%一 ECHO MOVE%%一个%% B。\\ %%一个\\)POPDGOTO:EOF 这应该完成所需的任务 - 或者至少显示所需的说明。如果您满意发行,集 sourcedir 为您所需的根目录下,删除命令两个回声关键字激活。在通过追加 MD 上尝试重新创建现有目录可能psed燮$ P $生成的消息> 2的方式> NUL 到 MD 行同样,一个文件已被移动可能通过附加psed SUP $ P $报告> NUL 到移动行。 2 - ; NUL 燮presses错误消息(尝试创建一个现有目录是错误的),而文件移到消息是一个普通的输出信息,因此差附录 - 它是如何工作首先, PUSHD 设置当前目录为目标。结果在 DIR 命令的输出是由 FOR / F 标记化。在标记= 1 * 子句指示第一令牌(1)被分配给指定的metavariable( %% A )和隐含第二令牌(*),以 %% b - 只要下一个字母。令牌 * 办法一切都明确提及的令牌数量后。否 delims 子句中使用,所以默认分隔符(设置隔板, SPACE are used.The DIR is targeted on a mask of *_*_*-* *.*, so only files matching that mask - where means any number of any characters - will be located. Because the mask is "quoted" the spaces is included in the mask. Without the quotes, two separate masks would be specified. The /b option produces a list in basic form, that is, names only, no headers or summary. The /a-d option suppresses any directory names that may have fitted the mask.Hence, for LAST_FIRST_7-24-1936 Diagnostic - Topography 11-18-10_1.pdf, the dir lists LAST_FIRST_7-24-1936 Diagnostic - Topography 11-18-10_1.pdf and FOR/F tokenises as LAST_FIRST_7-24-1936 to %%a and Diagnostic - Topography 11-18-10_1.pdf to %%b using the as a delimiter.The filename can then be reconstructed by re-inserting the space between %%a and %%b. Any filename containing a separator needs to be quoted to group the characters and signal that they are not separated elements. The target of the move is terminated with to specify "This is a directory name."The POPD restores the original logged directory. 这篇关于一批基于文件名的一部分创建文件夹和文件移动到该文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云! 08-20 10:17