『壹』 shell参数传入sed命令向.ini文件写入字符串出错: sed -i '/mediatedir=/mediatedir='$path'' config.ini
sed-i's#mediatedir=.*#mediatedir='"$path"'#'config.ini
『贰』 VB读取远程ini文件
可以通过webbrowser控件浏览此asp页面以得到文本内容,哈哈,然后验证的工作就简单了,解析并验证txt文件,这还不简单么?^^
『叁』 用C语言读取一个文件中的内容,如何对不同的行进行解析,比如是配置文件
很简单的 配置文件 微软有抓们的一套解析函数 INI文件是Windows系统中一类比较重要的文件,通常用来存放系统或者应用程序的配置信息,以方便系统或者应用 程序在初始化时再次读入。比如Windows系统中的配置文件win.ini和system.ini,它们就主要存放系统启动或用户登陆时的系统信息。这 项功能在方便了系统配置的同时,也为非法程序的自动运行提供了可乘之机。显然,这类文件的重要性应该引起我们的重视。但是对于这样的ini文件的读写操作 却与普通文本文件有着种种的不同,尤其体现在编程实现上。笔者曾经尝试用手动更改的方法在文件中加入一些项,使得自己的程序能够在初始化时自动运行,但是 却没有成功,最后还是藉由编程的方法来实现了。这里主要涉及到一些API函数,而这些函数又往往不被人们所熟知,本文的任务就是在介绍这些函数的同时,用 简单的程序作了示例,下面我们言归正传。先来看几个往配置文件中写入信息的函数:(1)WritePrivateProfileSection()用来在ini文件中直接向指定区域写入键和值的信息,其原型如下:BOOL WritePrivateProfileSection(LPCTSTR lpAppName, // 指向指定字段的字符串LPCTSTR lpString, // 指向要写入的键与值字符串LPCTSTR lpFileName // 指向文件名称字符串,如果不包含完整路径,则在windows目录下创建);用法示例:WritePrivateProfileSection(_T(“windows”),_T(“load=c:\\winnt\\notepad.exe”),_T(“c:\\winnt\\win.ini”));(2)WritePrivateProfileString()与上一个函数的不同点在于其将键和值分开了,原型如下:BOOL WritePrivateProfileString(LPCTSTR lpAppName, // 指向指定字段的字符串LPCTSTR lpKeyName, // 指向指定键的字符串LPCTSTR lpString, // 指向指定值的字符串LPCTSTR lpFileName // 指向文件名称字符串);用法示例:WritePrivateProfileString(_T(“windows”),_T(load”)_T(“c:\\winnt\\notepad.exe”),_T(“c:\\winnt\\win.ini”));(3)WritePrivateProfileStruct()与前面两个的不同在于文件尾有校验和,原型如下:BOOL WritePrivateProfileStruct(LPCTSTR lpszSection, //指向指定字段的字符串LPCTSTR lpszKey, //指向指定键的字符串LPVOID lpStruct, //指向存放要加入的数据的缓冲区,如果为NULL,则删除键UINT uSizeStruct, //缓冲区大小,以字节为单位LPCTSTR szFile //以零结尾的文件名称字符串,如果为空,则向win.ini写入);用法示例:WritePrivateProfileStruct(_T(“windows”),_T(“load”),pBuffer,sizeof(pBuffer),_T(“c:\\winnt\\win.ini”));(4)还有两个函数,是专门用来向win.ini文件写入的,函数原型如下:BOOL WriteProfileSection(LPCTSTR lpAppName, //指向指定字段的字符串LPCTSTR lpString //指向指定值的字符串);BOOL WriteProfileString(LPCTSTR lpAppName, //指向指定字段的字符串LPCTSTR lpKeyName, //指向指定键的字符串LPCTSTR lpString //指向指定值的字符串);下面来看几个对应的从ini文件获取信息的API函数,上面已经说得很详细了,这里只说其中两个:Dword GetPrivateProfileString(LPCTSTR lpAppName, //指向指定字段的字符串LPCTSTR lpKeyName, //指向键的字符串LPCTSTR lpDefault, //如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量LPTSTR lpReturnedString, //存放INI文件中值的目的缓存区DWORD nSize, //目的缓冲区的大小,以字节为单位LPCTSTR lpFileName //指向INI文件名称的字符串); UINT GetPrivateProfileInt(LPCTSTR lpAppName, //指向指定字段的字符串LPCTSTR lpKeyName, //指向键的字符串INT nDefault, //如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量LPCTSTR lpFileName //指向INI文件名称的字符串);程序示例1: 我们在这里建立了一个应用程序“App Name”,并且使用了一个INI文件“appname.ini”,在此INI文件中,我们写入如下内容:[Section1] FirstKey = It all worked out okay. SecondKey = By golly, it works. ThirdKey = Another test. 代码分析如下:#include <stdio.h> #include <windows.h>//主函数main() { //定义局部CHAR inBuf[80]; HKEY hKey1, hKey2; DWORD dwDisposition; LONG lRetCode; // 试图创建INI文件的键值lRetCode = RegCreateKeyEx ( HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT \\CurrentVersion\\IniFileMapping\\appname.ini", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey1, &dwDisposition); //判断是否出错if (lRetCode != ERROR_SUCCESS){ printf ("Error in creating appname.ini key\n"); return (0) ; } //试图设置一个节区的值lRetCode = RegSetValueEx ( hKey1, "Section1", 0, REG_SZ, "USR:App Name\\Section1", 20); //判断是否出错if (lRetCode != ERROR_SUCCESS) { printf ( "Error in setting Section1 value\n"); return (0) ; } //试图创建一个应用名称键值lRetCode = RegCreateKeyEx ( HKEY_CURRENT_USER, "App Name", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey2, &dwDisposition); //判断是否出错if (lRetCode != ERROR_SUCCESS) { printf ("Error in creating App Name key\n"); return (0) ; }//强制系统重新读取映射区的内容到共享内存中,以便于将来对应用程序的调用可//以找到它,而不需要重新启动系统 WritePrivateProfileStringW( NULL, NULL, NULL, L"appname.ini" ); //向INI文件中添加一些键值 WritePrivateProfileString ("Section1", "FirstKey", "It all worked out okay.", "appname.ini"); WritePrivateProfileString ("Section1", "SecondKey", "By golly, it works.", "appname.ini"); WritePrivateProfileSection ("Section1", "ThirdKey = Another Test.", "appname.ini"); //测试一下添加的正确性GetPrivateProfileString ("Section1", "FirstKey", "Bogus Value: Get didn't work", inBuf, 80, "appname.ini"); printf ("%s", inBuf); return(0); }程序示例2:通过修改win.ini中的字段[windows]中的键load或run,或者是为system.ini中的字段[boot]中的键 shell增加值,可以达到设置程序自动运行的目的。假设我们要自动运行notepad.exe,修改后的win.ini或system.ini文件象这 样就可以:win.ini[windows]load=c:\winnt\notepad.exerun=c:\winnt\notepad.exesystem.ini[boot]shell=c:\winnt\explorer.exe c:\winnt\notepad.exe注意:system.ini文件的修改要特别注意,如果你单纯改成shell=c:\winnt\notepad.exe,则不能首先运行 explorer.exe,很明显你将看不到桌面和任务栏,呵呵,笔者在做实验时就曾因为粗心造成了这样的后果,不过不用害怕,只要你用我们下面提供的程 序,将它修改过来就可以了,默认时,系统在system.ini中的[boot]下是shell=c:\winnt\explorer.exe。很多非法 程序就是通过修改这两个文件来达到自启动的目的的。下面这个程序可以在附书光盘中找到,名称为“AutoPlay”,使用VC++6.0写成,核心程序源代码如下:void CAutoRunDlg::OnBrowse() {//只浏览exe文件CfileDialog fileDlg(TRUE,_T("EXE"),_T("*.exe"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,(_T("Executable Files (*.exe) |*.exe ||")));//显示打开文件的对话框//当操作者选择OK时,程序取得选择文件的全路径名(包括文件的路径及文件名称),并将相应的数值传输给相关的控件变量。if(fileDlg.DoModal()==IDOK){ m_strFileName=fileDlg.GetPathName();//向将变量中的数值传输给控件显示出来。 UpdateData(FALSE);} }void CAutoRunDlg::OnApply() {//更新数据UpdateData(TRUE); //写入ini文件LPCTSTR filename; filename=m_strFileName; WritePrivateProfileString(_T("windows"),_T("load"),filename,_T("c:\\winnt\\win.ini"));}您如果要更改system.ini,可以将WritePrivateProfileString(_T("windows"),_T("load"),filename,_T("c:\\winnt\\win.ini"));改为 WritePrivateProfileString(_T("boot"),_T("shell"),filename,_T("c:\\winnt \\system.ini"));并且在输入文件名时输入c:\winnt\explorer.exe c:\winnt\notepad.exe。写到这里,本文的意图基本达到,如果您可以把某些代码亲自实现,相信读者会有比较大的收获。
『肆』 批处理读取ini文件
dim read,str,filefile="c:\c.ini" '文件完整路径set open=createobject("scripting.filesystemobject")set shell=createobject("Wscript.Shell")read=open.opentextfile(file).readallfor each i in split(read,vbcrlf)if instr(i,"s1=")>0 then str=split(i,"s1=")(1)nextshell.run "a.exe /a /n " & str'保存为vbs类型文件
『伍』 易语言中有个命令:浏览文件夹(, ) 怎么把浏览后的目录写入配置文件(后缀名为:ini)中
要写如的字节集数据:到字节集(文件夹目录) 源码已发送
『陆』 linux shell 读取一个配置文件并获取其中的全部内容,急!!!!!!!
下面是读取复配置文件,制作为变量显示出来,实例如下:[[email protected] ~]$ cat boot.inipath='/data/source'username='myuser'password='mypassword'[[email protected] ~]$ cat test.sh#!/bin/sheval `cat ./boot.ini`echo "$username"echo "$path"echo "$password"[[email protected] ~]$ ./test.shmyuser/data/sourcemypassword
『柒』 如何配置my.ini文件才能提升性能
再提升也就一丢丢。不会太明显
『捌』 导航地图在u盘,如何修改引导文件shell.ini
要在电脑上打开修改
『玖』 如何用Desktop.ini或其他配置文件自定义文件夹的名称
这个文件只是来自定义文件夹里面的内容或是自定义图标,应该没有办法来修改文件间的名称吧,文件夹的名称只有你手动修改才可以啊。http://school.cfan.com.cn/system/xp/apply/2007-06-26/1182813873d73210.shtml
『拾』 启动所有配置文件shell脚本怎么写
key=value 文本格式配置而对于 linux shell,基本上很难使用前面提到的各种格式。所以在 unix 系统上,很多 shell 脚本的配置文件都是纯粹的 key=value 文本格式,例如绝大多数的开机服务启动脚本、网络配置文件等。例子 1:ntp 配置文件$ cat /etc/sysconfig/ntpd# Drop root to id 'ntp:ntp' by default.OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"# Set to 'yes' to sync hw clock after successful ntpdateSYNC_HWCLOCK=no# Additional options for ntpdateNTPDATE_OPTIONS=""例子 2:网络配置文件$ cat /etc/sysconfig/networkNETWORKING="yes"HOSTNAME="xx.com"而且,要注意得是,一般 key=value 的等号两边不应该有空格,因为大多数脚本都是直接 source 配置文件的(当然,也有部分脚本是会自己处理配置文件格式),使用起来很简单,基本上没有解析的操作:$ cat /etc/init.d/networkif [ ! -f /etc/sysconfig/network ]; then exit 0fi. /etc/sysconfig/network理所当然,这种格式无法满足更复杂的配置文件需求,比如 ini 格式的 section。那么,在 shell 中除了满世界去找一个解析库之外,能有什么方法可以实现呢?扩展 key=value 文本格式配置假设,我们管理着 n 个集群,每个集群配置项都是一样的,我们需要在 shell 脚本中,可以根据集群的名称来导入对应的配置。下面我们介绍一种最简单的方法,只需要针对第一种格式扩展下即可。我们创建一个配置文件目录 conf.d,在这个目录下存放各个集群的配置文件。每个集群对应一个配置文件,文件名为集群名称,例如:$ cat conf.d/CLUSTER_Ac_cluster_name="CLUSTER_A"c_cluster_type=1在脚本中,我们可以这样来导入相应集群的配置:function load_config(){ local cluster_name="$1" if [ -f "conf.d/$cluster_name" ]; then . conf.d/$cluster_name fi}load_config CLUSTER_A因为各个集群的配置文件相互独立,所以如果包含一些全局范围的配置项,需要在每个配置文件中都增加。或者,再增加一个入口的配置文件:# cat global.confg_conf_dir=conf.d # 配置文件目录g_version="0.1" # 全局配置脚本相应调整下:GLOBAL_CONF=/etc/xxx/global.confif [ -f "$GLOBAL_CONF" ]; then . $GLOBAL_CONFfiif [[ "$g_conf_dir" != /* ]]; then # 如果是相对路径 g_conf_dir="$(dirname $GLOBAL_CONF)/$g_conf_dir"fifunction load_config(){ local cluster_name="$1" if [ -f "$g_conf_dir/$cluster_name" ]; then . $g_conf_dir/$cluster_name fi}load_config CLUSTER_A类 ini 配置格式第二种方法,基本上已经可以解决我们之前假设中提出的需求,简单而且实现方便,不足的是配置文件比较零散,管理上可能不是很方便。如果,你仍然倾向于一种类似 ini 格式的配置,可以试试下面这种方法。在这种场景下,每个集群应该是一个独立的 section,所以转换成 ini 格式,配置文件应该是这样的:[DEFAULT]g_version="0.1" ; 全局配置[CLUSTER_A]c_cluster_name="CLUSTER_A"c_cluster_type=1但是,我们前面提到过,原生的 shell 是很难去解析 ini 格式的配置文件的,所以上面的形式还得变化下,我们用 shell 中的函数来模拟 section:$ cat cluster.conf# global configg_version="0.1" # 全局配置function section_cluster_a(){ c_cluster_name="CLUSTER_A" c_cluster_type=1}function section_cluster_b(){ c_cluster_name="CLUSTER_B" c_cluster_type=1}配套的配置文件解析库:$ cat config.sh#!/bin/echo Warnning, this library must only be sourced!if [ ! -f "cluster.conf" ]; then exit 0 # or print error before exitfi. cluster.conffunction load_config(){ local cluster_name=$(echo "$1" | tr A-Z.- a-z__) # 特殊符号转换 section_$cluster_name &>/dev/null # 执行函数,将集群的配置赋值给对应的全局变量}function option(){ local opt_name="$1" if [[ "$opt_name" != c_* ]]; then # no "c_" prefix opt_name="c_$opt_name" fi echo "${!opt_name}" # indirect reference by variable name}