Board logo

标题: [其他] bat&python混编 [打印本页]

作者: pcl_test    时间: 2015-10-24 23:51     标题: bat&python混编

本帖最后由 pcl_test 于 2015-10-25 12:36 编辑

采用的清屏+注释屏蔽法,混编及传值方式与bat&js混编类同,类似的需注意批处理代码中包含 ''' 字符的问题
  1. @echo off
  2. set "str=hello world"
  3. for /f "delims=" %%a in ('python -c "print('%str%'.upper())"') do echo;%%a
  4. pause
复制代码
  1. @echo off
  2. (for /l %%a in (1 1 5) do @echo;%%a)|python -c "import sys;print(sys.stdin.read().replace('3','hi'))"
  3. pause
复制代码
  1. #coding: gbk
  2. '''*&cls
  3. @echo off
  4. set "str=哈"
  5. python "%~f0" "%str%"
  6. pause&exit
  7. '''
  8. import sys
  9. print(sys.argv[1]*10);
复制代码
  1. '''*&cls
  2. @echo off
  3. >"%tmp%\a.txt" (for /l %%a in (1 1 5) do @set /p=%%a)<nul
  4. python "%~f0"<"%tmp%\a.txt">"%tmp%\b.txt"
  5. start "" "%tmp%\b.txt"
  6. pause&exit
  7. '''
  8. import sys;
  9. line=list(sys.stdin.readline());
  10. print(''.join([str(int(x)+1) for x in line]));
复制代码
  1. #*&cls&wmic LogicalDisk where "DriveType='3'" get Caption,FreeSpace|python "%~f0"&pause&exit
  2. import sys;
  3. n=0;
  4. while True:
  5.     line=sys.stdin.readline().replace('\r\n','');
  6.     if not line:
  7.         break;
  8.     if n==1:
  9.         ar=line.split();
  10.         print(ar[0]+'\t'+str(long(ar[1])/1073741824)+'GB');
  11.     else:
  12.         print(line);
  13.         n+=1;
复制代码

作者: 依山居    时间: 2015-10-25 00:01

我了个去。。我最近也想试试来着。
作者: CrLf    时间: 2015-10-25 00:36

本帖最后由 CrLf 于 2015-10-25 01:00 编辑

encoding: gb2312 貌似更方便一点,两边都能放中文
另,建议 # 后不留空格,因为 path 中如果有个 #.bat 的话...
作者: pcl_test    时间: 2015-10-25 10:26

回复 3# CrLf

嗯,确有可能,多谢提醒




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2