Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file Bat按第n个字符或单词将文件排序到名为“的文件夹中”;n";?_Batch File_File Organization - Fatal编程技术网

Batch file Bat按第n个字符或单词将文件排序到名为“的文件夹中”;n";?

Batch file Bat按第n个字符或单词将文件排序到名为“的文件夹中”;n";?,batch-file,file-organization,Batch File,File Organization,我正在尝试使用.bat将大量标记为“(日期)(客户端)-(文档标题).pdf”的文件(例如“12-21-11 Thompson-Case Management.pdf”)排序到以客户端为标题的文件夹中。到目前为止,我得到了: for /f "tokens=2* delims= " %%b in ('dir /b *.pdf') do ( md %%b 所以%%B是客户端名称,例如“汤普森”,它的相应文件夹已被制作,但我不知道如何处理 Stase,以便只考虑%%B。“—”后面的标题对于每

我正在尝试使用.bat将大量标记为“(日期)(客户端)-(文档标题).pdf”的文件(例如“12-21-11 Thompson-Case Management.pdf”)排序到以客户端为标题的文件夹中。到目前为止,我得到了:

for /f "tokens=2* delims= " %%b in ('dir /b *.pdf') do (
    md %%b
<%>所以%%B是客户端名称,例如“汤普森”,它的相应文件夹已被制作,但我不知道如何处理<代码> Stase,以便只考虑%%B。“—”后面的标题对于每个文件都不一致,因此类似于
move“%%a%%b%%c%%d”
的内容并不总是有效。有没有办法做到这一点

或者,如果比较容易,在排序文件时有没有办法只考虑第十个字符?因此,“12-21-11汤普森-案例管理”可以被分类到一个名为“T”的文件夹中。

未测试:

 for /f "tokens=2* delims= " %%b in ('dir /b *.pdf') do (
        md %%b > nul 2>&1
        for /f %%F in ('dir /b /a:-d *%%b*.pdf') do (
           move %%F %%b
        )

    )

使用一个简单的FOR循环来列出文件,使用一个内部的FOR/F循环来解析客户机名称

for %%F in (*.pdf) do for /f "tokens=2" %%A in ("%%F") do (
  if not exist "%%A\" md "%%A"
  move "%%F" "%%A"
)

它仍然会产生相同的结果,即生成正确的文件夹,但不会移动任何文件。我似乎无法理解这一点…如果使用echo而不是move,会打印什么?
File not found系统找不到指定的文件File not found
,它只创建一个名为“%b”的文件夹,但不移动任何内容。不过,我确实设法找到了答案,至少在使用空格作为分隔符方面:
for/f“tokens=2 delims=“%%b in('dir/b*.pdf^ find“*.pdf”)do(md%%b>nul 2>&1 move*%b*.pdf%%b)
似乎有效,但客户端名称类似于“Hughes,b”的情况除外所以我一直在手动排序。有没有办法解析客户端名称,从第10个字符开始,以下面的连字符结尾,然后删除连字符前面的尾随空格?