‘壹’ as2.0如何将文件所在文件夹的名字作为变量
可以用一个字符串变量,如下
var filestr:String="文件夹2";
还有一种也可以,用全局变量:
_global.filestr="文件夹2";
不过这样在使用的时候一定要加上_global才可以。
‘贰’ 批处理:用什么命令可以将一个特定的文件名设为一个变量的值。
还有一个问题是,路径知不知道?如果知道的话用下面的:
@echo off
set DD=C:\sss\
for /f "delims=" %%i in ('dir /a-d /b "%DD%*"') do (set F=%%i)
echo %F%
pause
如果不知道,用这个:(当然了有个前提,是SSS只有一个)
@echo off
for /r C:\ %%i in (sss) do (if exist %%i set DD=%%i)
for /f "delims=" %%i in ('dir /a-d /b "%DD%\*"') do (set F=%%i)
echo %F%
pause
‘叁’ 批处理,用正则表达式找出当前文件夹的名称,不是路径
应该说用findstr命令并不适合所提问题,它的所谓"正则表达式"也就能查找某文件中或某字符串中是否含有某类特征组合,就是说只能精确到是否含有的一行或一整串,而不能从一串中截取该串中的相符的一段,要想截取得用别的命令(顺便说一下"&"符属cmd命令中的特殊符,而""符属于findstr命令中的转义符,在不用/c参数及引号时要表示一个得写成\findstr的用法及特殊符的处理方法一两句说不清楚...)
当前路径有现成的变量%cd%可表示,如果想获取当前文件夹名可用:
for%%iin("%cd%")doset"当前文件夹=%%~nxi"
如果是从字符串中获取(而不是真正当前路径):
set"pathstr=D:ProgramfilesAAABBBxxx"
if"pathstr:~-1"==""set"pathstr=%pathstr:~,-1%"
for%%iin("%pathstr%")doset"该文件夹=%%~nxi"
‘肆’ bat批处理中表示任意文件〔夹〕名称分别用什么变量表示
for /f "delims=" %%a in ('dir /s /b /a-d') do ("C:\Progra~1\WinRAR\WinRAR.exe" a -ep "%%~na.rar" "%%a")
其中,C:\Progra~1\WinRAR\WinRAR.exe为WINRAR程序目录,自行调整
默认压缩当前目录及子目录文件.
'dir /s /b /a-d' 为搜索范围,要是要压缩“D:\123”文件夹内所有文件,就改为 'dir /s /b /a-d d:\123' 即可。
----------------------------------------------------
在桌面上运行,目录为D:\EFG
for /f "delims=" %%a in ('dir /s /b /a-d "D:\EFG"') do ("C:\Progra~1\WinRAR\WinRAR.exe" a -ep "%%~na.rar" "%%a")
------------------------------
试试这个
for /f "delims=" %%a in ('dir /s /b /ad "D:\sql*"') do (mysqlmp "%%a" > "%%a.sql")
‘伍’ Excel VBA列出某文件夹下子文件夹及文件名
遍历文件夹 并列出文件 & 文件夹 名 代码如下:
在文件夹内 新建 个 Excel文件
Excel文件内 按 Alt+F11 视图--代码窗口, 把如下代码复制进去, F5运行
Sub遍历文件夹()
'OnErrorResumeNext
Dimfn(1To10000)AsString
Dimf,i,k,f2,f3,x
Dimarr1(1To100000,1To1)AsString,qAsInteger
Dimt
t=Timer
fn(1)=ThisWorkbook.path&""
i=1:k=1
DoWhilei<UBound(fn)
Iffn(i)=""ThenExitDo
f=Dir(fn(i),vbDirectory)
Do
IfInStr(f,".")=0Andf<>""Then
k=k+1
fn(k)=fn(i)&f&""
EndIf
f=Dir
LoopUntilf=""
i=i+1
Loop
'*******下面是提取各个文件夹的文件***
Forx=1ToUBound(fn)
Iffn(x)=""ThenExitFor
f3=Dir(fn(x)&"*.*")
DoWhilef3<>""
q=q+1
arr1(q,1)=fn(x)&f3
f3=Dir
Loop
Nextx
ActiveSheet.UsedRange=""
Range("a1").Resize(q)=arr1
MsgBoxFormat(Timer-t,"0.00000")
EndSub
效果如图:
‘陆’ 如何用变量定义文件的名称
不知道是什么编程语言呢。不过随便哪种应该都支持字符串拼接的吧,比如java直接写name + ".asp" 就行了。
‘柒’ 批处理 获取文件夹名称作为变量
你应该懂bat的吧,能看懂啊。自己要稍微改,因为不知道你要的动作,所以我call :sub了
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b /ad "C:\Documents and Settings\"') do (
set str=%%i
if not "!str:~4,1!"=="" (if "!str:~5,1!"=="" (call :sub) ))
pause&exit
:sub
echo yes
‘捌’ 文件名可以用变量代替么
至少有三种方式可以创建文件,文件名都可以使用变量。
常用的函数中,无论是fopen还是
CreateFile
,其参数都可以使用变量来作为文件名来创建文件和读写文件
‘玖’ matlab如何实现通过变量来命名文件
我的方法:
mydir=uigetdir('d:','选择一个txt文件保存目录');%%%选择txt文件的保存位置
% %%%可以选择已存在文件夹,也可以新建文件夹,也可以
% %%%选择D盘以外的文件夹,这里的d只起参考作用
str=input('str=','s'); %其中's'是输入字符串的意思,即输入txt文件名
fid=fopen([mydir '\' str '.txt'],'w');%%%以刚才的名字新建txt文件
a=[1 2 3;5 7 9];%%%要写入的数据
fprintf(fid,'%d %d %d\n',a');%%%向txt文件写入数据,如果不写数据的话此步骤可以省略
fclose(fid);%%%关闭txt文件
楼上的方法我也看过了,有一些小问题,我修改了一下,另外个人觉得楼上的方法把简单问题复杂化,很简单的东西没必要搞得那么复杂吧,下面给出我修改后的楼上的方法
楼上修改后:
clear;clc;
file_name_tag=1;
err_file_name=['\/:*?"<>|',':*?“{}'];%文件名不应含有的字符,此处可以根据需要自己改
while file_name_tag
err_num=0;
% err_char=[];%%%
file_name=input('文件名:','s');
err_char=zeros(1,length(file_name));
for n=1:length(err_file_name)
if sum(file_name==err_file_name(n))
err_num=err_num+1;
%获取输入的文件名中非法的字符:
err_char(err_num)=err_file_name(n);%err_char为字符串,应用char()函数
end;
end;
if err_num
disp(strcat('文件名中含有非法字符:“',err_char(1:err_num),'”,请重新输入!'));
elseif isempty(file_name)
disp('文件名不能为空')
else
file_name_tag=0; %跳出循环
end;
end;
file_dir_tag=1;%准备进入循环
while file_dir_tag
file_dir=input('路径:','s');
if file_dir(end)~='/'||file_dir(2)~=':'||file_dir(3)~='/'
disp('错误的文件路径,应以“X:/”开头,并以“/”结束,请重新输入!');
elseif isempty(file_name)
disp('路径不能为空')
else
file_dir_tag=0;%跳出循环
end;
end;
file_format_tag=1;%准备进入循环
while file_format_tag
file_format=input('文件格式:','s');
if file_format(1)~='.'
disp('错误的文件格式,应以“.”开头,请重新输入!');
elseif isempty(file_name)
disp('文件格式不能为空')
else
file_format_tag=0;%跳出循环
end;
end;
wenjian=strcat(file_dir,file_name,file_format);%文件路径、名称和格式
% dos(['echo > ',wenjian]);%保存文件
fid=fopen(wenjian,'w');
a=[1 2 3;5 7 9];
fprintf(fid,'%d %d %d\r\n',a');
fclose(fid);
这算是比较复杂的方法,我修改了一些小问题,做了一些改动
‘拾’ bat怎么取所在文件夹名字为变量
找到这个可以参考下。
@echo off
color 0e
echo ◎■◎■◎■◎■◎■◎
echo ■批量文件压缩处理 ■
echo ◎■◎■◎■◎■◎■◎
if EXIST WinRAR的路径临时存储.txt del WinRAR的路径临时存储.txt
echo.
echo ■■■■■■■■■■■■■■■■■■■■■
echo ■使用说明: ■
echo ■将此批处理放入所需压缩的文件夹的父目录■
echo ■■■■■■■■■■■■■■■■■■■■■
echo.
echo ◎◎◎◎◎◎◎◎◎◎◎◎
echo ◎输入Y(yes) 开始程序 ◎
echo ◎输入E(exit)退出程序 ◎
echo ◎◎◎◎◎◎◎◎◎◎◎◎
set choose =
set /p choose=请选择:
if '%choose%'=='y' goto 开始程序
if '%choose%'=='e' (goto :exit) else goto 开始程序
:开始程序
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe" /v path>>WinRAR的路径临时
存储.txt
:: 查询注册表中的winrar程序安装路径,并将找到的路径发送到'WinRAR的路径临时存储.txt'文件中去
for /f "tokens=1,2,* skip=4 delims= " %%x in ('more WinRAR的路径临时存储.txt') do set WinRAR的路径=%%z
:: *********************************************************
:: 【1】使用语句:FOR /F ["options"] %variable IN (file-set|"string"|'command') DO command [command-
parameters]
:: 【2】/F:查找字符串或则文件中的特定字符参数。使用后默认方式为查找每个文件(字符串)中的每一行中分开的
第一个空白符号。跳过空白行。
:: 【3】["options"]:您可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个或多个指定
不同解析选项的关键字。这些关键字为:
:: eol=c - 指一个行注释字符的结尾(就一个)
:: skip=n - 指在文件开始时忽略的行数。
:: delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。
:: tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配m-n格式为
一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之
后分配并接受行的保留文本。
:: usebackq - 指定新语法已在下类情况中使用:在作为命令执行一个后引号的字符串并且一个单引号字符为文
字字符串命令并允许在filenameset中使用双引号扩起文件名称。
:: 【4】%variable:指定的参数,在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %
variable。变量名称是区分大小写的,所以 %i 不同于 %I。
:: 【5】file-set|"string"|'command':指定的文件或字符串和目录。
:: 【6】DO command [command-parameters]:1)command为指定对每个文件执行的命令。2)command-parameters为特
定命令指定参数或命令行开关。
:: 【7】整个语句的解析:在文件“in ('more WinRAR的路径临时存储.txt')”中查找特定的字符串,1)先跳过前四行
(skip=4);2)以空格为分隔符(delims= );3)将找到的第一个字符传递给参数x("tokens=1,2,* skip=4 delims=
" %%z);4)找到一个字符后就开始运行do后面的命令。5)将参数l获得的值赋予常量'WinRAR的路径'中(do set
WinRAR的路径=%%z),参数将按照查找的顺序自动将找到的字符串赋予参数z之中,本例中按照顺序“x\y\z”,故z获得
tokens中的符号“*”中的字符串。
:: *********************************************************
if EXIST WinRAR的路径临时存储.txt del WinRAR的路径临时存储.txt
for /f "delims=" %%i in ('dir /ad /b') do call :开始压缩 %%i
:: *********************************************************
:: 【1】dir /ad /b:1)/a为显示所有文件。2)/ad则为跟宽式相同,但文件是按栏分类列出的。3)/b使用空格式(没
有标题信息或摘要)。
:: 【2】call :开始压缩 %%i:调用:'开始压缩',并将获得的字符串赋予参数i中。
:: *********************************************************
echo.
echo ◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
echo ◎压缩完成 ◎
echo ◎输入R(Repetition) 重新运行 ◎
echo ◎输入E(exit)退出程序 ◎
echo ◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
echo.
set choose =
set /p choose=请选择:
if '%choose%'=='r' goto 开始程序
if '%choose%'=='e' (goto :exit)
:exit
exit
:开始压缩
set 网站文件夹=%*
"%WinRAR的路径%\rar" a -r -msrar;zip;jpg;jpeg;gif;rm;rmvb;mp3;wave;wam;wmv;mpeg -ag %网站文件夹%.rar %网
站文件夹%
:: *********************************************************
:: [1]-r:连同子文件夹
:: [2]-ag:以当前日期与时间生成压缩文件名
:: [3]-ms:指定不压缩而直接存储的文件类型。当正确使用时,它将有助于增加压缩速度,而不会显着的减小压缩率。
:: *********************************************************
EndLocal
:: *********************************************************
:: [1]EndLocal:结束批处理文件中环境更改的本地化,将环境变量还原为匹配 setlocal 命令前的值。
:: *********************************************************