我想写一个DOS批处理程序,它将通过我的目录并将所有* .txt文件移动到dest文件夹以从txt文件的第一个字符开始
实施例
abc.txt将移动到文件夹“a”
def.txt将移动到文件夹“d”
等等...
答案 0 :(得分:4)
从命令行:
for %i in (*.txt) do (set FOLDER=%i & move %i %FOLDER:~0,1%)
在批处理文件中,你必须加倍%s,如下所示:
for %%i in (*.txt) do (set FOLDER=%%i & move %%i %FOLDER:~0,1%)
答案 1 :(得分:0)
我认为问题的关键是提取第一个字母。
你可以使用~char来提取文件名的第一个字母
set str=filename
echo %str:~0,1%
f
答案 2 :(得分:0)
您可以使用biterscripting chex命令(字符提取器)来提取文件名的第一个字符。这是脚本。假设您的文件位于C:\ My Directory。
# Script move1.txt
# Change directory to My Directory.
cd "C:\My Directory"
# Collect a list of *.txt files.
var str list ; lf -n "*.txt" > $list
# Go thru files one by one.
while ($list <> "")
do
# Get the next file.
var str file ; lex "1" $list > $file
# $file now has full path of a found *.txt file. Get just the file name.
var str filename ; stex -p "^/^l[" $file > $filename
# $filename has just the file name. Get the first character.
var str firstchar ; chex -p "1" $filename > $firstchar
# $firstchar now has the first char of file name. The folder where we
# want to move this file is, then, C:\Destimation Folder\$firstchar .
var str destfolder ; set $destfolder = "C:\Destination Folder\"+$firstchar
# Move $file to $destfolder.
system move ("\""+$file+"\"") ("\""+$destfolder+"\"")
done
脚本是biterscripting(http://www.biterscripting.com)。要尝试将脚本保存为C:\ Scripts \ move1.txt,请启动biterscripting,输入以下命令。
script move1.txt
如果需要定期运行脚本,请在任务计划程序中安排以下命令。
"C:\biterScripting\biterScripting.exe" "move1.txt"
我没有测试过脚本,在示例文件上测试它。 确保将“C:\ My Directory”和“C:\ Destination Folder”更改为正确的值。始终对文件名和路径使用双引号。
答案 3 :(得分:0)
这是一行:
一般形式: 对于%a in(a b c d e f g h i j k l m n o p q r s t u v w y y z),如果不存在则%a \ nul md%a&amp;如果存在%a *移动%a *%a这个mod只会执行txt文件(根据OP): ...如果存在%a * .txt移动%a * .txt%a
或者一个人可以在蝙蝠中增强这个“......如果存在%% a *%1移动%% a *%1 %% a”以允许在命令行上进行扩展匹配;这可能需要%1中的点(现在不想测试它。如果这是一个问题,你可以总是有一个if%1!==!来选择一般表格和%1特定已经提供了点。
当然,%a用于命令行和蝙蝠,将%s正常加倍(%a - &gt; %% a)。
此解决方案将避免文件名中的空格错误,但您最终会为每个字母添加一个子目录(即使没有以该特定字母开头的文件)。
现在我输入的时间比输入上面的原始行更长......: - )
答案 4 :(得分:0)
计算当前文件夹中的所有TSV文件。
for /f "delims=|" %%f in ('dir *.tsv /b') do (
echo %%~nf
findstr /R /N "^" %%f | find /C ":"
)
答案 5 :(得分:-1)
copy sourcepath\a*.txt destinationpath\a
复制sourcepath \ b * .txt destinationpath \ b